DokuWiki

It's better when it's simple

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

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


ru:devel:menus

Меню

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

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

Также имеется вводная статья в блоге.

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

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

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

Элементы меню

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

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

Иконка

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

  • Формат SVG
  • Вес меньше 2 КБ
  • Должна содержать только один объект <path>

Цвет заливки <path> будет задан в CSS-файлах шаблона.

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

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

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

Пример: для интеграции UserMenu как списка ссылок используйте следующее:

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

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

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

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

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

$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>';
}

Поддержка устаревших функций

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

  • tpl_button()
  • tpl_actionlink()
  • tpl_get_action()
  • tpl_actiondropdown()
  • tpl_toolsevent()
ru/devel/menus.txt · Последнее изменение: 2022-07-24 16:14 — 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