Инструменты пользователя

Инструменты сайта


Боковая панель

Этот перевод старее, чем оригинальная страница, и может быть неактуальным. Смотрите, что было изменено.
Перевод этой страницы?:

О «Докувики»

Дополнительные возможности

Corporate Use

Наше сообщество


Следуйте за нами на Фейсбуке, в Твиттере и других социальных сетях.

Конфиденциальность (англ.)

ru:devel:metadata

Хранение метаданных

Если содержимое страницы вики это данные, то такую информацию как время последнего обновления, кто обновлял, размер файла и т.п., можно назвать метаданными этой страницы. На этой странице описано где и как такая дополнительная информация хранится в DokuWiki.

Хранение

DokuWiki не хранит все метаданные в некотором определенном месте (вроде базы данных или реестра). Метаданные могут являться свойствами самого файла страницы (например, размер файла, время последнего обновления). Другие метаданные Dokuwiki держит в директории meta, а точнее в файлах с расширением .meta, названия которых соответствуют названиям страниц вики.

Преобразователь метаданных

FIXME Кто-нибудь знает как «renderer» по-толковей перевести?1)) - визуализатор

Информация в директорию meta изначально записывается преобразователем метаданных. Он создает в этой директории дополнительный файл для каждой страницы, который называется $id.meta. В файле хранится сериализованный многомерный массив PHP, ключи которого названы также как элементы Dublin Core. Преобразователь вызывается при сохранении страницы, или индексатором, когда страница добавлена не через интерфейс DokuWiki, или другим путем (например, с помощью скрипта).

Функции для получения и задания метаданных

В файле inc/parserutils.php определены две функции для работы с метаданными:

  • p_get_metadata($id, $key, $render) возвращает многомерный массив метаданных для определенной страницы.
    • $id — идентификатор страницы вики; обязательный параметр
    • $key — имя атрибута метаданных; необязательный параметр, значение по умолчанию — false (функция возвращает весь массив метаданных)
    • $render — булево значение, определяющее нужно ли вызывать преобразователь для генерации метаданных если это еще не было сделано; необязательный параметр, значение по умолчанию — false
  • p_set_metadata($id, $data, $render, $persistent) устанавливает требуемые атрибуты метаданных.
    • $id — идентификатор страницы вики; обязательный параметр
    • $data — массив с парами атрибут ⇒ значение, для метаданных, которые требуется установить; обязательный параметр
    • $render — булево значение, определяющее нужно ли вызывать преобразователь для генерации метаданных; необязательный параметр, значение по умолчанию — false
    • $persistent — булево значение, определяющее будут ли указанные атрибуты сохранены при следующем преобразовании метаданных (см. ниже); необязательный параметр, значение по умолчанию — true

Структура метаданных

На текущий момент, базовый преобразователь метаданных сохраняет следующие атрибуты:

  • 'title' — строка, первый заголовок
  • 'creator' — строка, полное имя пользователя, создавшего страницу
  • 'description' — массив
    • 'abstract' — фрагмент текста страницы (от 250 до 500 символов)
    • 'tableofcontents' — массив, состоящий из структур со следующими полями:
      • 'hid' — строка, идентификатор заголовка
      • 'title' — строка, текст заголовка
      • 'type' — строка, тип элемента HTML списка
      • 'level' — целое число, уровень вложенности заголовка
  • 'contributor' — массив, ключи которого являются идентификаторами, а значения полными именами пользователей, редактировавших страницу
  • 'date' — массив
    • 'created' — метка времени, дата создания страницы
    • 'modified'— метка времени, дата последней значительной модификации
  • 'relation' — массив
    • 'isreferencedby' — массив, список страниц ссылающихся на текущую: идентификатор страницы ⇒ булево значение, true, если страница существует
    • 'references' — массив, список страниц на которые ссылается текущая страница: идентификатор страницы ⇒ булево значение, true, если страница существует

Плагины также могут хранить свои атрибуты в метаданных. На текущий момент используются:

  • 'relation' — массив
    • 'ispartof' — массив, список страниц, которые включают текущую: идентификатор страницы ⇒ булево значение, true, если страница существует (плагин include)
    • 'haspart' — массив, список включенных страниц: идентификатор страницы ⇒ булево значение, true, если страница существует (плагин include)
  • 'subject' — массив, список тэгов (плагин tag)
  • 'type' — строка, 'draft' для черновиков (плагин blog)

Для метаданных, которые могут быть использованы внешними приложениями, рекомендуется использовать имена элементов Dublin Core.

Постоянные метаданные

DokuWiki хранит метаданные в двух массивах: в текущем (current) и постоянном (persistent). Постоянный массив содержит копии тех атрибутов, которые не должны быть утеряны в процессе преобразования страницы в метаданные. Все запросы метаданных, использующие функцию p_get_metadata() берут данные из текущего массива.

Примеры постоянных атрибутов:

  • 'creator'
  • 'contributor'

Метаданные и плагины

В дополнение к описанным выше функциям доступа к метаданным, существуют еще два способа, которыми плагины может взаимодействовать с ними.

Плагины, расширяющие синтаксис вики, могут создавать метаданные для текущей страницы обрабатывая условие $format==«metadata» в методе render(). Метаданные (атрибут ⇒ значение) добавляются в массив renderer->meta, а постоянные метаданные также в массив renderer->persistent.

Плагины, связанные с событиями вики, могут зарегистрировать метод PARSER_METADATA_RENDER, для получения или модификации метаданных до или после преобразования.

1)
render - визуализировать, формировать изображение, renderer - формирующий, формировщик, составитель наконец :
ru/devel/metadata.txt · Последние изменения: 2014-09-19 09:01 — Shcherbyna