ZebroidСтатьиСоздаём "Содержание документа" на подобии Википедии

Создаём "Содержание документа" на подобии Википедии

Голосуем за реализацию данного инструмента на автомате 
http://zebroid.com.ua/forum/topic/4006/


Сегодня мы научимся делать «Содержание документа», как в Википедии.



Для чего это нужно? Это улучшит юзабилити и качество документа. Яндекс любит, когда документ сделан для людей, вот этим то мы и сейчас займёмся.
Скажу сразу — необходимо будет сделать несколько различных манипуляций — поэтому потом сделаем «Каплю-макрос», который будет автоматически делать за нас всю работу.

Для начала, чтобы наша капля-макроса работала нужно определить Заголовки — по которым и будет формироваться Содержание. Данную процедуру необходимо делать вручную и без этого никак.
Что я имею ввиду: просмотрите свои документы — в них должны быть сформированы теги H1, H2, H3, H4...B,I… и т.д. Вот по этим тегам и будет наша капля-макроса на автомате делать Содержание.

БУДЕМ СОБИРАТЬ ДАННЫЕ ПО 3м ТЕГАМ: H2,H3,H4 (можно больше, но это вы уже сами по логике сделаете).
1)ПОИСК/ЗАМЕНА, СТАВИМ ГАЛОЧКУ «РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ. Нужно привести все теги (по которым будет формироваться содержание) в один вид.

Поиск:
<h2>([^<]+)</h2>
Замена:
<br>< b>1332\1</b>
О чём говорят эти строки: ищем всё, что внутри тега H2 — и переименовываем сам тег H2 — в <br><b>1332
Зачем? Чтобы было понятно — какие данные мы уже обработали.
То же самое проделываем с другими тегами, которые у вас есть в документе.
<h3>([^<]+)</h3>
<br><b>1333\1</b>
Данные "<br><b>1333" — должны отличаться — так как — нам нужно будет в конце — все теги поставить обратно.
<h4>([^<]+)</h4>
<br><b>1334\1</b>
и т.д. Можно какие угодно ставить теги для замены — хоть <I> <P> <U> — главное понимать, какое именно Содержание вы хотите видеть.
1.1) Записываем полученное правило замены в "soderj".

2) Вторым этапом мы формируем список Содержания и записываем его в самое начало документа. По необходимости потом вы сможете перенести отображение "Содержания" в любое другое место страницы.
ПОИСК/ЗАМЕНА, СТАВИМ ГАЛОЧКУ "РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Поиск:
(.*)<br><b>([^<]+)</b>(.*)
Замена:
<a href="#\2">\2</a><br></menu>
\1<br><b1 id="\2">\2</b>\3
Аналогичную запись повторяем ещё около 7 раз — т.к. данный код должен идти циклично.
2.1) Записываем полученный правило замены в "soderj2".
3) После сформирования "Содержания" вернём прежнию разметку документа, т.е. H1, H2....
Поиск:
<b1 id=\"1332([^<]+)">1332([^<]+)</b>
Замена:
<h2 id="\1">\2</h2>
Для других тегов аналогично, не забывая при этом прежних данных для разных тегов.
<b1 id=\"1333([^<]+)">1333([^<]+)</b>
<h3 id="\1">\2</h3>
<b1 id=\"1334([^<]+)">1334([^<]+)</b>
<h4 id="\1">\2</h4>
3.1) Записываем полученный правило замены в "soderj3".
4) Теперь приведём "Содержание" в красивый вид. Сделаем ограничение по длине в 50 знаков.
записываем:

soderj4


4.1) Записываем полученный правило замены в "soderj4".
5) Окружаем Содержание тегом <menu></menu> для того, чтобы можно было эти данные перенести в нужное место страницы или переместить в доп. поля.

soderj5



5.1) Записываем полученный правило замены в "soderj5".
6) Самое основное мы сделали, необходимо создать настройку для "Расставить произвольный код" и записать саму "Каплю-макрос".
И так:
идём в Обработка текста — "Расставить произвольный код", создаём запись:
<start>
Устанавливаем галочку "В начале статьи".
Всё, как на рисунке:

6.1) сохраняем как "start".
6.2) Идём в Каплю-макрос и создаём задание по очереди вписывая (если одно и то-же значение, значит нужно повторное действие производить:
Поиск и замена soderj1
Поиск и замена soderj2 (возможен повтор)
Поиск и замена soderj3
Поиск и замена soderj4
Расстановка произвольного кода start
Поиск и замена soderj5 (возможен повтор)
Поиск и замена soderj5 (возможен повтор)
Поиск и замена soderj5 (возможен повтор)

Обратите внимание, что некоторые поля повторяются, это всё зависет от того — на сколько длинное будет формироваться Содержание.
Если содержание имеет более 7 записей, то НУЖНО повторять действия для: soderj2 и soderj5. В данном случае — лучше больше — чем меньше и тогда ошибок не будет.
6.3) Сохранить каплю-макрос
Наконец всё готово и оно замечательно работает!


Посмотрите теперь, как выглядит наш документ в Зеброиде:

п.с. Уверен, есть и другие методы, как легче сделать работу выше, но для меня — этот вариант ближе.

Голосуем за реализацию данного инструмента на автомате 
http://zebroid.com.ua/forum/topic/4006/

9 комментариев

  • avatar

    17 апреля 2014, 20:29

    timaalex
    Спасибо… надо будет как-нибудь опробовать
  • avatar

    17 апреля 2014, 20:50

    Vladimir1997
    Может автор программы внесет эти макросы в дефолтные так чтобы не пришлось все это проделывать?
  • avatar

    18 апреля 2014, 01:08

    iptips
    для joomla есть спец. плагин которые делает это на автомате, насчет других систем не знаю.
    За статью спасибо.
  • avatar

    19 апреля 2014, 20:56

    AleksanderDream
    Хотелось бы узнать что за плагин для JOOMLA который проделывает все это автоматом?!
  • avatar

    20 апреля 2014, 02:34

    iptips
    autoTOC
  • avatar

    28 апреля 2014, 10:02

    b2b
    Голосуем за реализацию данного инструмента на автомате
    zebroid.com.ua/forum/topic/4006/
  • avatar

    8 мая 2014, 10:50

    BoBkaShaxV
    здравствуйте, я недавно купил программу и пытаюсь разобраться в ней) подскажите плиз пункт 1.1) Записываем полученное правило замены в «soderj».
    я не понял куда это записать, разъясните если не трудно данный пункт по подробней новичку
  • avatar

    9 мая 2014, 17:51

    b2b
    Это в продолжении пункта 1. В Поиске/замена сохраняете всё, что сделали в пункте 1 и называете это как«soderj»
  • avatar

    23 апреля 2020, 20:26

    iehon
    Теперь это реализовано проще:
    Обработка текстов — содержание статей.

    Можно выбрать место вставки. Но если пользуетесь CMS можно выводить через плагины TOC.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.