Вывод содержания статьи


Этот модуль позволяет в автоматическом режиме формировать содержание статьи на основании использованных в статье заголовков. Формируемый html код при необходимости в принципе достаточно легко можно изменить в самом файле модуля. Примеры реализации на скриншотах в этой статье. На первом скриншоте пример по образу Википедии.
 
Пример с большим количеством заголовков и подзаголовков:
Вывод содержания статьи


Формируемый html код при необходимости в принципе достаточно легко можно изменить в самом файле модуля. Важно: следует внимательно следить за иерархией используемых тегов. Например, если первым будет стоять тег H3, а ниже будет H2, то он и все что ниже отображаться не будет.

Установка:
1. Если используется DLE версии ниже 13.0, то следует залить из архива папку engine/ в корень сайта. Если DLE версии 13.0 и выше, то следует загрузить плагин headers-menu.xml через Систему управления плагинами.

2. В DLE версии ниже 13.0 следует открыть engine/modules/show.full.php и найти:
		$tpl->set( '{navigation}', "<!--dlenavigationcomments-->" );

Добавить выше:
		include_once ENGINE_DIR . '/mods/headers_menu.php';

3. Необязательно - для использования в статических страницах, следует открыть engine/modules/static.php и найти:
			$tpl->set( '{static}', $template );

Добавить выше:
			include_once ENGINE_DIR . '/mods/headers_menu.php';
			$menulist = HeadersMenu::init($template);
			$template = $menulist . $template;

4. Необязательно - для формирования содержания статьи при Предварительном просмотре на сайте engine/preview.php и в админке engine/inc/preview.php, следует найти в этих файлах:
$tpl->set('{short-story}', stripslashes($short_story));

Добавить выше:
include_once ENGINE_DIR . '/mods/headers_menu.php';
$menulist = HeadersMenu::init($full_story);
$full_story = $menulist . $full_story;

5. В шаблоне fullstory.tpl, в нужное место добавить:
[hmenu]<div class="contents">
	<h2>Содержание:</h2>
	<ul class="h-menu">{hmenu}</ul>
</div>
<script>
$(document).on('click', 'a[href*=hmenu-]', function(e){
	e.preventDefault();
	var id = $(this).attr('href');
	var top = $(id).offset().top - 90;
	$('html,body').animate({scrollTop:top + 'px'});
})
</script>
<style>
.contents{
	background: #F8F9FA;
	border: 1px solid #A2A9B1;
	padding: 15px 20px 10px 5px;
	display: table;
	border-radius: 2px;
	margin-top: 15px;
}
.contents>h2{
	margin: 0;
	padding: 0 0 15px;
	font: bold 17px 'Trebuchet MS';
	text-align: center;
}
.contents ul{
	margin: 0;
	padding: 0 0 0 20px;
	list-style: none;
}
.contents ul li{
	margin: 0;
	padding: 1px 0;
}
.contents ul li span{
	color: #444;
	font-size: .9em;
}
</style>
[/hmenu]

Готово!

Обратите внимание на JS код. С его помощью можно сделать отступ сверху, если используется плавающее верхнее меню, ну и небольшая анимация прокрутки. Так же JS код можно и даже следует вынести в отдельный подключенный к шаблону JS файл.

Скачать: файл могут только зарегистрированные пользователи.
 
Версия DLE: 12.х-13.x
Кодировка: utf-8
Автор: Sander
Источник:
  • Oxigen
  • 0
  • 214
Информация
Оставлять комментарии могут только зарегистрированные посетители.
  • Рейтинг@Mail.ru
  • Яндекс.Метрика