2012-02-22

сайт на DokuWiki: 005-Список страниц по алфавиту

Иногда вдруг может потребоваться список всех страниц сайта, или не всех, а из некоего подраздела, причём в алфавитном порядке.
Вручную создать такой список, конечно, можно, но куда как интереснее спихнуть работу на умную машину.
Тем более, что уже и подходящий плагин есть :-) - Alphaindex
http://www.dokuwiki.org/plugin:alphaindex

А занимается тем, что генерирует алфавитный указатель имен на странице.


Синтаксис
{{alphaindex>[namespace][#n][|nons]}}
[namespace] - это пространство имён, откуда строится наш индекс. Если точка - с текущего (где расположена страница с командой), две точки или пустое значение - весь сайт.
[n] - число уровней вниз для построения индекса. Т.е., 1 - только дочерние страницы. 2 - ещё и дочерние дочерних (внучатые, т.е.?), 3 - ещё глубже... Необязательное значение.
nons - исключить названия разделов и подразделов из списка.

Пример, который отображает только страницы внутри wiki:plugins и ниже в этом разделе (максимум два уровня вглубь):
{{alphaindex>wiki:plugins#2|nons}}
Другая конструкция:
{{alphaindex>.#2|nons}}
показывает все страницы (файлы) с глубиной на 2 уровня в корневом пространстве, т.е. на всём сайте, имена разделов (каталогов, namespace) не показываются. Только страницы.

Теперь, вооружённые знанием, напишем заклинание, формирующее нам алфавитный список всех страниц сайта (и только страниц, без имён разделов и подразделов):
{{alphaindex>.|nons}}

И вот что получаем в таком случае на сохранённой странице:


Некоторые параметры создаваемого блока индекса настраиваются в параметрах плагина:


С данными настройками мы получаем именно то, что видим на втором скриншоте.

Внешний вид блока также настраивается с помощью CSS.

Оформление (CSS стиль)

Все данные отображаются с помощью плагина alphaindex внутри div (помечен "alphaindex").

Вы можете настроить каждую часть сгенерированного кода.

Например, если вы определили begin_letter_tpl как:
==== {{letter}} ====
плагин генерирует следующий HTML код:

<h3><a name="a" id="a">{{letter}}</a></h3>

и вы можете создать такое, например, правило CSS:
#alphaindex h3{
    display: block;
    background-color: #dee7ec;
    padding: 2px 0 2px 10px;
    margin: 20px 0 5px 0;
 }
Более подробно данный вопрос мы рассмотрим позже.

2 комментария: