DokuWiki

It's better when it's simple

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

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


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.1411109950.txt.gz · Последнее изменение: 2014-09-19 08:59 — Shcherbyna

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki