DokuWiki

It's better when it's simple

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

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


ru:devel:metadata

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

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

Плагины могут использовать хранилище метаданные для своих целей; например, хранения комментариев (как плагин discussion), переключателей определенных функций или параметров использования кэша.

Хранение

DokuWiki не хранит все метаданные системно, вроде базы данных или реестра / прим. пер. хотя имеет определённые возможности для внедрения СУБД /. Часть метаданных - размер файла и время последнего обновления - являются свойствами самого файла страницы из /data/pages/_структура_сайта_/_статья_.txt. Прочие метаданные хранятся в параллельной папочной структуре /data/meta/_структура_сайта_/, в файлах с именами:

  • _статья_.meta
    • основные данные о странице
  • _статья_.changes
    • данные о ревизиях страницы
  • и _статья.indexed
    • статус индексирования страницы

Визуализатор метаданных

При создании новой статьи на сайте (включая нестандартные способы, например, добавление через API или скриптами, реиндексацию после форс-мажорных обстоятельств) визуализатор (renderer) метаданных создает файл _статья_.meta в директории /data/meta/_структура_сайта_/, который посещает при каждой последующей правке. В файле хранится сериализованный многомерный массив PHP, ключи которого названы аналогично элементам протокола метаданных Dublin Core.

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

В файле /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, для получения или модификации метаданных до или после визуализации.

ru/devel/metadata.txt · Последнее изменение: 2020-03-30 07:52 — Dr-Yukon

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: 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