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