Меню — важная часть шаблона. Они обеспечивают доступ к функциям вики, т.е. действия. Например, они могут предоставить кнопку или ссылку для редактирования текущей страницы, доступа к последним изменениям или предложить экспортировать 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>'; }
С появлением системы меню следующие функции стали устаревшими. Авторам шаблонов и плагинов следует обязательно заменить их в ближайшее время:
tpl_button()
tpl_actionlink()
tpl_get_action()
tpl_actiondropdown()
tpl_toolsevent()