Содержания статьи для DLE для DLE

Содержания статьи для DLE

Содержания статьи для DLE

Данный хак позволяет в автоматическом режиме формировать содержание статьи на основании использованных в статье тегов заголовков.
Примеры сделал по образу википедии.
Содержания статьи для DLE

Или вот пример с большим количеством заголовков и подзаголовков:
Содержания статьи для DLE




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

Установка:


Для автоматической установки в DLE 13.x достаточно установить плагин: GitHub.
Но изменения в шаблоне fullstory.tpl все равно нужно будет внести вручную.

Для ручной установки:
Скачать файл headers_menu.php и распаковать в папку engine/mods
headers_menu.zip [1,53 Kb] (cкачиваний: 134)

Открыть файл engine/modules/show.full.php
Найти строку:
		$tpl->set( '{navigation}', "<!--dlenavigationcomments-->" );

После нее вставить:
///////////////////////////////////////////////////////////////////////
		include_once ENGINE_DIR . '/mods/headers_menu.php';
///////////////////////////////////////////////////////////////////////


В шаблоне 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 файл.

Установка для статической страницы


Открыть файл engine/modules/static.php
Найти строку:
			$tpl->set( '{static}', $template );

ПЕРЕД ней вставить:
			include_once ENGINE_DIR . '/mods/headers_menu.php';
			$menulist = HeadersMenu::init($template);
			$template = $menulist . $template;


Примеры:


Пример #1
Пример #2

С уважением,
Олег Александрович a.k.a. Sander
Комментарии: (25)
  1. foto
    Клиент 20 февраля 2018 20:07 #
    а возможно чтоб в админке при "Предварительный просмотр" формировать содержание статьи?
    0
    1. foto
      Администратор 21 февраля 2018 12:36 #
      Открыть файл:
      engine/inc/preview.php - админка
      engine/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;
      /////////////////////////////////////////////////////////////////////////////////////
      +1
  2. foto
    Гость 21 февраля 2018 19:56 #
    Привет, а не будет ли для информационного сайта бо бо за повторения (как бы переоптимизация и все дела)
    0
    1. foto
      Администратор 21 февраля 2018 20:36 #
      В этом плане лучше проконсультироваться с СЕО специалистом.
      Мне известно только, что поисковики не индексируют ссылки с хеш тегом (википедия к примеру).
      0
  3. foto
    Гость 25 февраля 2018 05:40 #
    Почему DLE?
    Это же платный движок и вкладывать его стоимость, допустим, в стоимость услуг не есть приятной штукой или друзьям поднять визитку на нем

    Долго сидел на DLE, часто получал письма от LEGACY и ушел на Wordpress. PHP-шнику работать с ней сплошное удовольствие, кастомизируется и масштабируется в любом направлении
    0
  4. foto
    Гость 25 марта 2018 09:48 #
    А как сделать, чтобы в содержании выводились только h2?
    0
    1. foto
      Администратор 25 марта 2018 14:38 #
      В коде файла заменить строку
      preg_match_all("#<h(\d+)>(.*?)</h\\1>#is", $story, $hmenu);

      На
      preg_match_all("#<h2>(.*?)</h2>#is", $story, $hmenu);
      0
  5. foto
    Гость 25 марта 2018 16:24 #
    Цитата: Sander
    В коде файла заменить строку
    preg_match_all("#<h(\d+)>(.*?)</h\\1>#is", $story, $hmenu);

    На
    preg_match_all("#<h2>(.*?)</h2>#is", $story, $hmenu);

    Сделал и меню совсем пропало.
    0
  6. foto
    Посетитель 13 апреля 2018 20:27 #
    Спасибо за отличный хак!
    Можно ли добавить возможность скрывать/раскрывать блок (типа спойлера)?
    0
    1. foto
      Администратор 16 апреля 2018 11:17 #
      В теории возможно, но для этого лучше использовать непосредственно спойлеры.
      0
  7. foto
    Посетитель 16 апреля 2018 21:27 #
    Sander, возникла проблема.
    Пишет Error Parse class и путь к файлу /mods/headers_menu.php online 33.
    На локальном сервере работает, на удаленном — нет.
    Версия DLE и там, и там — 11.1.
    Не подскажите, в чем может быть проблема?
    0
    1. foto
      Администратор 17 апреля 2018 10:37 #
      Обновите php хотя бы до 5.4, а лучше до 5.6 или 7.1
      +1
  8. foto
    Гость 18 апреля 2018 11:36 #
    А как его образовать под микулокунськую статику? Ну чтобы выводилось как бургамик на старнице, а не по пирекенски:?
    0
  9. foto
    Гость 19 апреля 2018 16:10 #
    Приветствую. Подскажите пожалуйста почему хак не работает на 11 и 12 версиях только на 10? ( Проверяю на чистой дле Опенсервер.
    0
    1. foto
      Администратор 19 апреля 2018 16:12 #
      Хак разрабатывался на DLE 12.0. Почему он может не работать у вас - затрудняюсь ответить. Может у вас там PHP 5.3 ?
      0
  10. foto
    Гость 19 апреля 2018 18:17 #
    pastenow.ru/ 50789bbee7cea7a413cdc1d026ad0b31
    Тоже странно вроде 5.6
    Скопировал демо страницу но нечего, только текст и стрелочки к оглавлению меню. А самого меню нету.
    0
  11. foto
    Гость 21 апреля 2018 11:07 #
    Ради этого модуля скачал новый опен и прокачал на максимальные требования и поставил новейшую версию и опять нечего нету. Даже с вики не хочет выстраивать. Вот скрин всех параметров.
    pastenow.ru/3556a41c69a3926d83d44b19a524fb56

    Удалил модуль и чудо менюха появилась с неактивными модулями вот скрин. Может в php есть дефект при отображении, ведь куда правильнее вставлять?
    pastenow.ru/7f7f69fb10b9fbdd0c9d2bc4d599d2b1
    0
    1. foto
      Администратор 21 апреля 2018 11:10 #
      Модуль рассчитан под стандартные теги заголовков [ h1 ] ... [ /h1 ]
      В крайнем случае просто <h1>...</h1>, без дополнительных аттрибутов.
      0
  12. foto
    Гость 21 апреля 2018 11:20 #
    Также при исправлении модуля только на H2 тоже нечего не происходит.
    0
  13. foto
    Гость 21 апреля 2018 11:26 #
    При H1 тоже не отображается. Может можно прикрепить файл идеального примера так как скопировавши пример с примера тоже нечего не отображается.
    0
    1. foto
      Администратор 21 апреля 2018 11:28 #
      Попробуйте использовать bb редактор вместо визуального.
      Если не поможет, то удаленно на словах ничем более не могу помочь.
      0
  14. foto
    Гость 20 мая 2018 16:51 #
    Еще раз здравствуйте. А можно для этого модуля создать плагин как в этой теме sandev.pro/web/136-hak-avtomaticheskiy-vyvod-spiska-id-podkategoriy.html
    Может тогда заработает, а то столько движков переставил а не срабатывает (
    0
    1. foto
      Администратор 22 мая 2018 12:10 #
      https://github.com/San-Dev/dle-plugins/blob/master/Headers-Menu.xml

      Установил на DLE 13.0 на froala редакторе, все работает.
      0
  15. foto
    Гость 13 октября 2018 19:59 #
    Sander подскажи пожалуйста, что надо убрать чтобы вся нумерация пропала, остались только ссылки.
    0
    1. foto
      Администратор 14 октября 2018 00:22 #
      Самый простой вариант - скрыть стилями:
      .h-menu span {display:none;}
      0
Добавить комментарий
  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2018.
При копировании, ссылка на источник обязательна.