Автоматическое содержание по заголовкам H2
- Краткое пояснение
- Что хочется сделать
- Зачем нужно содержание
- А ручками разве не проще?
- Постановка задачи
- Зелёным новичкам
- Опытным чайникам — сделайте круче
Краткое пояснение
Имеется в виду список озаглавленных частей текста, который, обычно, приводится в самом начале статей. Посмотрите для примера в начало этой задачи, сразу под главный заголовок. Примерно так вот.
Не секрет, что поисковики хорошо выдрессировали оптимизаторов и вебмастеров грамотно структурировать текст, разбивая его на смысловые части со своими заголовками — для более высокого ранжирования сайта. А те, в свою очередь, бодро дрючат на эту тему копирайтеров и программистов, заставляя первых учитывать требования поисковых машин при написании текста, а вторых — при разработке CMS.
Что хочется сделать
Соответственно, даже у начинающих блоггеров, текст разбит на озаглавленные смысловые части, и чаще всего, заголовок этот оформляется HTML-тегом h2 (h1 должен быть один, и он уже занят заголовком всей публикации).
У любого, хоть мало-мальски думающем о пользователе сайтовладельце рано или поздно возникнет мысль о целесообразности вывода в начале статьи краткого содержания текста в виде ссылок с якорями на основные его части. Польза от этого очевидна:
Зачем нужно содержание
- Посетитель сразу видит в содержании все подзаголовки и может сходу оценить полезность опуса для себя.
- Он же может сразу по ссылке с якорем перепрыгнуть в нужную ему часть текста (например, открыв вашу публикацию во второй раз) без лишних трат времени на скроллинг страницы и без натирания мозоли на пальце о колёсико мышки.
- Дополнительные ключевые слова на странице легальным, с точки зрения поискового робота, способом, без излишнего мозголомства (а как бы этот ключевик ещё раз ввернуть?).
- Дополнительные (хоть и небольшие) «баллы» от поисковой системы за заботу о пользователях и структурированность информации, не говоря уже о том, что любой модератор-человек (например, «белого» каталога сайтов) оценит такой «ход конём» по достоинству в положительную сторону.
А ручками разве не проще?
Не-а. Плавали — знаем. Во-первых, замучаешься сам даже по готовому тексту формировать содержание вручную. Одну-две публикации в месяц ещё можно пережить, но для активного блогера в конкурентной тематике, который пишет больше одного хорошего поста в день, подобная трата времени на рутинную работу критична.
Далее, текст (вместе с некоторыми подзаголовками) может даже на следующий день, снова подвергнуться кардинальной редактуре по ряду причин (самим автором, модератором ресурса, начальником автора и т.п.). Необходимость редактировать каждый раз ещё и содержание, плюс с риском понаделать ошибок в ссылках, кого угодно выведет из себя.
Не говоря уже о групповых ресурсах, где трудно без хорошей суковатой палки заставить авторов приводить свои тексты к каким-то стандартам, если это требует от них дополнительных трудозатрат. Причем проставление подзаголовков в современном javascript-RTF редакторе дело очень простое.
Постановка задачи
Разработать функционал обработки текста, на вход которой поступает некий структурированный и разбитый на смысловые части подзаголовками второго уровня HTML-текст произвольной (но не сильно большой) длины.
В этом тексте надо найти все заголовки второго уровня, оформленные тегом h2, и на основе этого сформировать содержание из ссылок с якорями на эти заголовки. При этом, сам исходный текст следует модифицировать, расставив якоря, на которые будет ссылаться содержание, перед нужными подзаголовками.
Зелёным новичкам
Кому трудны для понимания предыдущие пару абзацев (а фигли вы хотели, никто вам в реальности рассюсюкивать, как младенцам, постановку задачи не будет), смотрите, опять же, эту страницу и её исходный код — это само по себе и является подсказкой. Содержание текстов у меня формируется именно так — автоматически, по h2. И я специально налепил побольше подзаголовков. Берите HTML-код этой задачи без содержания и на нём тестируйте свои, пока ещё тщательно укрытые от постороннего взгляда, таланты программистов.
Опытным чайникам — сделайте круче
Отработайте ещё и заголовки третьего уровня h3, чтобы получилось красивое древовидное содержание. Предупреждаю, задачка усложняется гораздо больше чем в два раза и не имеет особого смысла для небольших текстов, чем характерны блоги. Лично я решил не заморачиваться даже со своей страстью писать о мухе простыни размером со слона.
Задачу можно решать как на PHP, так и на любом другом языке для веб-программирования. Это не особо важно. Если у вас получится решить задачу на Delphi, то победителей не судят (хотя извращенцев таки судят, но это уже другой вопрос).
22.03.2011 | 23:24
