Простое одноуровневое меню

Плагин simple_menu.py для генератора сайтов Poole выводит простое одноуровневое меню, каждый пункт которого ссылается на конкретную страницу сайта.  В зависимости от текущей страницы один из элементов меню будет подсвечен («текущий раздел»).  Подключается так:

from plugins.simple_menu import *

Пример добавления страницы сайта в меню:

title: Фотографии из личного архива
menu-title: Фото
menu-position: 5
menu-prefox: /photo/
---
Здесь собраны все мои фотографии.

Эта страница попадёт в меню под названием «Фото», пункт меню будет подсвечен как на самой странице, так и на всех страницах из папки /photo.  Если свойства menu-title нет — используется title.

В код шаблона (page.html) меню добавляется так:

<div id="menu">{{ simple_menu() }}</div>

Получаемый на выходе код выглядит примерно так:

<ul id="menu">
<li class="active"><a href="/"><span>Главная</span></a></li>
<li class="inactive"><a href="/photo/"><span>Фото</span></a></li>
</ul>

Настройка

Используемые свойства страницы:

  • labels, при наличии ключевого слова «draft» страница исключается из меню.
  • lang, используется для фильтрации меню по языку.
  • menu-key, уходит в свойство accesskey пункта меню.
  • menu-position, определяет порядок пункта меню, содержит целое число.  Без этого свойства страница не попадёт в меню.
  • menu-prefix, содержит префикс адреса, при наличии которого любая страница подсвечивает этот пункт меню.  Например, если для пункта меню указан префикс «/photo/», то на странице с адресом «/photo/archive/» этот пункт будет подсвечен.
  • menu-title, используется в качестве заголовка пункта меню.
  • title, используется в качестве заголовка пункта меню, если нет menu-title.

Используемые глобальные константы:

  • DEFAULT_LANGUAGE, содержит значение по умолчанию для свойства lang.

Важные особенности

  • В меню входят только страницы с языком, соответствующим языку страницы, на которой выводится меню.  То есть на страницах с разными языками будет разное меню.
  • Страницы с меткой «draft» в меню не попадают.