Это старая версия документа!
Содержание
Хранение метаданных
Если содержимое страницы вики это данные, то такую информацию как время последнего обновления, кто обновлял, размер файла и т.п., можно назвать метаданными этой страницы. На этой странице описано где и как такая дополнительная информация хранится в DokuWiki.
Хранение
DokuWiki не хранит все метаданные в некотором определенном месте (вроде базы данных или реестра). Метаданные могут являться свойствами самого файла страницы (например, размер файла, время последнего обновления). Другие метаданные Dokuwiki держит в директории meta
, а точнее в файлах с расширением .meta
, названия которых соответствуют названиям страниц вики.
Преобразователь метаданных
Кто-нибудь знает как «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' — массив
- '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, для получения или модификации метаданных до или после преобразования.