Содержания статьи для 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качиваний: 205)

Открыть файл 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
Комментарии: (48)
  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
  16. foto
    Гость 22 ноября 2018 14:17 #
    Добрый день. У меня не хочет отображаться. DLE 11.2. Как можно запустить, подскажите пожайлуста
    [hmenu]
    Содержание:
    {hmenu}
    [/hmenu]
    0
  17. foto
    Гость 22 ноября 2018 15:13 #
    Разобрался у вас в описании ошибка
    include_once ENGINE_DIR . '/mods/headers_menu.php'; а нужно
    include_once ENGINE_DIR . '/modules/headers_menu.php';
    ну или по крайней мере в моем случае это так.
    За хак спасибо большое
    0
    1. foto
      Администратор 23 ноября 2018 10:05 #
      В описании ошибок нет.
      Там написано что нужно распаковывать файл в папку engine/mods вы же распаковали в engine/modules
      0
      1. foto
        Гость 29 ноября 2018 10:58 #
        У меня версия DLE 11.2 там нет такой папки. А или ее нужно было создать...Все ясно.... Ладно в любом случае я разобрался, спасибо за ответ.
        0
  18. foto
    Клиент 16 декабря 2018 15:31 #
    Добрый день! Можно ли добавить навигацию по страницам путём хештега? site.ru/1345-name.html#zagolovokh2
    0
    1. foto
      Администратор 18 декабря 2018 00:15 #
      В скрипте именно так и сделано.
      Но для плавной анимации использование хештега блокируется в JS.
      Чтобы работал хештег - достаточно удалить/не использовать JS код из инструкции.
      0
  19. foto
    Гость 26 декабря 2018 06:06 #
    Здравствуйте!

    Супер модуль, огромное спасибо.

    Вопрос: а как убрать стрелочки вверх от заголовков?
    0
    1. foto
      Администратор 26 декабря 2018 12:31 #
      В php файле удалить часть кода:
      <a href="#hmenu-item-%2$d" title="К меню">&uarr;</a> 
      0
      1. foto
        Гость 14 февраля 2019 07:48 #
        Спасибо. Я смогу сделать на одном сайте, но на другом, где устанавливал автоматически, файла в папе /mods/ нету, как и самой папки. Где в этом случае удалить?
        0
        1. foto
          Администратор 14 февраля 2019 10:55 #
          В утилите управления плагинами в админке DLE.
          0
  20. foto
    Гость 26 декабря 2018 12:35 #
    А можно сделать меню в ряд с помощью кнопок?
    0
    1. foto
      Администратор 26 декабря 2018 12:39 #
      Можно.
      Просто стилями оформить.
      0
      1. foto
        Гость 26 декабря 2018 13:30 #
        а можно показать как это сделать с примером
        0
        1. foto
          Администратор 26 декабря 2018 14:33 #
          Для этого вам нужен дизайнер/верстальщик, который сможет нарисовать и сверстать кнопки согласно вашим пожеланиям.
          0
  21. foto
    Гость 28 февраля 2019 22:21 #
    Привет, подскажите пожалуйста, как вывести все это, перед первым h2 в статье, то есть небольшое описание (вступление статьи) и перед первым же h2 выходит Содержание
    0
    1. foto
      Администратор 28 февраля 2019 22:32 #
      Не подскажу.
      Для этого нужно писать регулярку и тестировать.
      0
      1. foto
        Гость 3 марта 2019 22:11 #
        Очень жаль, а то я все настроил, все вывел, а из-за этого недоразумения, что в DLE так все построено, у меня 784 статьи, я задолбаюсь, через теги выводить содержание).

        А вообще, такое возможно реализовать, чтобы выводилось перед первым h2 во всех статьях сразу?

        У меня информационник (статейный сайт).
        0
        1. foto
          Администратор 4 марта 2019 09:33 #
          А вообще, такое возможно реализовать

          Да, как я писал выше, для этого нужно писать регулярное выражение, которое будет искать нужное место в тексте и скрипт, который будет в это самое место вставлять нужный код. Но я этим заниматься не хочу.
          0
  22. foto
    Гость 25 марта 2019 20:21 #
    А как можно сделать например меню чтобы оно в строчку было? Сделал все через <h2> но надо чтобы оно было в строчку а не в столбик
    0
    1. foto
      Администратор 25 марта 2019 21:43 #
      Стилями.
      float: left; или display: inline-block; или display: flex;
      0
      1. foto
        Гость 27 марта 2019 21:03 #
        Цитата: Sander
        Стилями.
        float: left; или display: inline-block; или display: flex;


        да с этим разобрался уже пару дней как, а вот с пунктом чтобы например каждый пункт расматривать отдельно, чтобы каждому пункту например можно было было бы добавить иконку из Font Awesome
        0
  23. foto
    Клиент 4 апреля 2019 00:43 #
    Нет ли возможности в данном модуле сделать поддержку дополнительных полей (несколько строк)?

    Например, отдельно выводить тегом {hmenu_имяполя}
    0
    1. foto
      Администратор 4 апреля 2019 12:04 #
      В текущей реализации - нет.
      0
Добавить комментарий
  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2018.
При копировании, ссылка на источник обязательна.