Содержание

Меню

Меню — важная часть шаблона. Они обеспечивают доступ к функциям вики, т.е. действия. Например, они могут предоставить кнопку или ссылку для редактирования текущей страницы, доступа к последним изменениям или предложить экспортировать PDF-файл.

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

Также доступен вводный пост в блоге.

Доступные меню

вид Источник Описание
site SiteMenu определяет все действия на уровне вики, например действия, не относящиеся к одной странице. Примеры: недавние изменения, карта сайта)
user UserMenu определяет действия, относящиеся к текущему пользователю. Примеры: Логин, Администратор.
page PageMenu определяет действие, связанное с текущей страницей. Примеры: «Редактировать», «Показать старые версии».
detail DetailMenu аналогично меню страницы, но связано с изображением при отображении в подробном представлении
MobileMenu объединяет все элементы из меню «Сайт», «Пользователь» и «Страница», когда им разрешено отображение в мобильном контексте. Полезно для создания единого гамбургер-меню.

Плагины могут расширять и изменять вышеуказанные меню, используя событие MENU_ITEMS_ASSEMBLY.

Пункты меню

Меню состоят из пунктов меню — объектов, наследуемых от AbstractItem.php. Пункт меню настраивает несколько свойств, которые шаблон может использовать для отображения этого элемента. Сюда входят триггерное действие, метка, значок SVG и многое другое. Пожалуйста, обратитесь к источнику чтобы узнать, какие свойства доступны..

Плагины могут создавать свои собственные элементы и добавлять их в доступные меню с помощью события MENU_ITEMS_ASSEMBLY.

Иконки

Значок, возвращаемый методом getSVG() и заданный в $svg свойстве, должен соответствовать следующим ограничениям:

Цвет заливки пути будет установлен CSS шаблона при его использовании.

Чтобы соответствовать стилю других значков, рекомендуется либо выбрать значок из огромного бесплатного выбора на https://materialdesignicons.com/, либо придерживаться рекомендаций по дизайну материалов при разработке собственного значка..

Добавление меню в шаблоны

Меню, упомянутые выше, создают их экземпляры и либо используют один из удобных методов, либо просто вызывают getItems() и перебирают объекты элементов.

Пример: чтобы интегрировать UserMenu в виде списка ссылок, используйте это:

echo (new \dokuwiki\Menu\UserMenu())->getListItems();

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

echo (new \dokuwiki\Menu\MobileMenu())->getDropdown();

Пожалуйста, обратитесь к источнику, чтобы узнать, что еще доступно.

Если вам нужен конкретный HTML-код для пунктов меню, вам нужно перебрать элементы меню и создать HTML самостоятельно. Например, этот цикл создаст значки в шаблоне записи, что немного сложнее:

$items = (new \dokuwiki\Menu\PageMenu())->getItems();
foreach($items as $item) {
  echo '<li>'
      .'<a href="'.$item->getLink().'" title="'.$item->getTitle().'">'
      .'<span class="icon">'.inlineSVG($item->getSvg()).'</span>'
      . '<span class="a11y">'.$item->getLabel().'</span>'
      . '</a></li>';
}

Устаревшая поддержка

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