Меню
Меню являются важной частью шаблона. Они предоставляют доступ к функциональности вики, или действиям. Например, они могут предоставлять кнопку или ссылку для редактирования текущей страницы, доступ к последним изменениям или предложение экспортировать 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()