Автоматизированное создание содержания страницы с нумерацией заголовков доступно с версии PmWiki 2.2.119, для активации добавьте в config.php:
$PmTOC['Enable'] = 1;
Рецепт основан Cookbook:AutoTOC с некоторыми упрощениями:
%block notoc% также не попадут в Содержание;
(:markup:) также не попадут в Содержание.
Вышеперечисленные возможности регулируются следующими контентными директивами:
(:toc:) Содержание будет показано на месте вызова команды (вместо дефолтного "перед первым заголовком"), причем форсированно, вне зависимости от числа заголовков страницы;
(:notoc:) Содержание не будет показано, даже если заголовков больше трех, или же существует директива (:toc:). В случае, если у вас на странице только один-два заголовка, опция пригодится чтобы подавить автоматическую нумерацию.
Содержание генерируется на базе Якорей, которые создаются автоматически около Заголовков. Якоря могут задаваться вручную или автоматически. Якорь PageUrl#here можно вручную создать следующими способами:
!! Заголовок с id %block id=here%
!! Заголовок с якорем [[#here]], или
!! [[#here]] Заголовок с якорем
[[#here]]
!! Якорь, предшествующий заголовку
Если же ни один из этих способов не применен, Содержание автоматически создает Якоря на базе семантической структуры страницы, например: #toc-1.2.1, где 1.2.1 - это "семантический путь" к текущему заголовку.
В локальной конфигурации (local/config.php) доступны следующие настройки:
$PmTOC['Enable'] = 1; # включить/выключить Содержания, по-умолчанию 0.
$PmTOC['MaxLevel'] = 6; # максимальный уровень вложенности Заголовков, используемых для генерации Содержания. По-умолчанию, 6, что означает включение заголовков от <h1> до <h6>.
$PmTOC['MinNumber'] = 3; # минимальное необходимое для генерации Содержания число заголовков на странице. Примеры:
$PmTOC['MinNumber'] = 2; # Содержание будет генерироваться на страницах с двумя и более Заголовками;
$PmTOC['MinNumber'] = 9999999; # Содержание фактически не будет генерироваться автоматически, его можно будет вызвать вручную директивой (:toc:). Обратите внимание, автоматическая нумерация Заголовков при этом сохранится!
$PmTOC['NumberedHeadings'] = '1.1.1.1.1.1'; # метод автоматической нумерции Заголовков:
$PmTOC['NumberedHeadings'] = 'I.1.a'; $PmTOC['EnableBacklinks'] = 1; # после заголовков добавлять ссылку в виде "↑", возвращающую назад к Содержанию (по-умолчанию, выключено).
$PmTOC['ParentElement'] = "#wikitext"; # CSS-селектор элемента, определяющий место добавления Содержания. По-умолчанию, содержание вставляет перед первым найденным Заголовком, здесь можно переопределить это поведение. В любом случае, применение директивы (:toc:) имеет высший приоритет (см. выше).
Внеся следующие правки XLPage, можно перевести Содержание на русский:
"Contents" => "Содержание", "show" => "показать", "hide" => "скрыть",
Кстати: можно изменить отображение блока с Содержением. Чтобы, например, вывести его справа добавьте следующий CSS-код в ваш макет:
.PmTOCdiv {
float: right;
margin-left: 5px;
}
См. также: Cookbook:AutoTOC. Если вы ранее использовали AutoTOC, не забудьте отключить его перед активацией $PmTOC.