Содержание страницы

Пожалуйста, экспериментируйте в песочнице!

Автоматизированное создание содержания страницы с нумерацией заголовков доступно с версии 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) доступны следующие настройки:

  • $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';
      обозначит высший уровень Заголовка римскими цифрами (I, II, ...), второй уровень арабскими, третий - латинским буквами (a, b, ...), а оставшиеся уровни снова цифрами.
  • $PmTOC['EnableBacklinks'] = 1; # после заголовков добавлять ссылку в виде "↑", возвращающую назад к Содержанию (по-умолчанию, выключено).
  • $PmTOC['ParentElement'] = "#wikitext"; # CSS-селектор элемента, определяющий место добавления Содержания. По-умолчанию, содержание вставляет перед первым найденным Заголовком, здесь можно переопределить это поведение. В любом случае, применение директивы (: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 11:43 AM Pacific
PmWiki.TableOfContents: редакция от December 17, 2022, at 09:18 AM Pacific