Автоматический вывод подкатегорий для DLE

Автоматический вывод подкатегорий

Автоматический вывод подкатегорий

У вас на сайте много категорий? И вы их все прописываете в шаблоне вручную? Тогда мы идем к Вам!
Этот простенький модуль предназначен, чтобы хоть немножечко упростить жизнь администраторов и/или разработчиков сайтов.
Не смотря на то, что модуль довольно таки простой, ему можно найти довольно много вариантов применения. Тут уже у кого на сколько хватит фантазии, в пределах возможностей модуля конечно :)

Небольшая ремарка, я рекомендую все сторонние модули размещать в специальной папке ./engine/mods/ (и призываю к этому всех других разработчиков), таким образом все модули находятся в одном месте, а не разбросаны по всевозможным папкам. Для модулей из нескольких файлов там же создаются отдельные папки, например ./engine/mods/orderdesc/.
В итоге все выглядит очень опрятно и не путаются сторонние модули с файлами движка в папке ./engine/modules/.

Приступим, в папке ./engine/mods/ создать файл autocats.php с содержимым:
<?php
defined('DATALIFEENGINE') || die("Hacking attempt!");
$cid = isset($parent) ? (int)$parent : false;
$skiped = [];   //через запятую можно перечислить ID категорий которые не надо отборажать
foreach ($cat_info as $k => $v) {
	if ($skiped && in_array($k,$skiped)) {
		continue;
	}
	if ($cid !== false) {
		if ($cid == $v['parentid']) {
			if ($category_id==$k || $cat_info[$category_id]['parentid'] == $k) {
				echo "<li class=\"current\"><a href=\"/".get_url($k)."/\">{$v['name']}</a></li>";	//подсветка открытой категории, при заданном параметре parent
			} else {
				echo "<li><a href=\"/".get_url($k)."/\">{$v['name']}</a></li>";	//просто категория, при заданном параметре parent
			}
		}
	} elseif ($category_id == $v['parentid']) {
		echo "<li><a href=\"/".get_url($k)."/\">{$v['name']}</a></li>";		//автоматический список подкатегорий из просмотравемой категории
	}
}


Теперь в шаблоне можно подключать следующим образом:
<ul>{include file="engine/mods/autocats.php"}</ul>

Этим кодом будет всегда выводиться список только подкатегорий из просматриваемой категории. При просмотре главной, будет выводиться список категорий первого уровня.

Можно указать параметр parent=2, где 2 - ID категории.
<ul>{include file="engine/mods/autocats.php?parent=2"}</ul>

Теперь будет выводиться список подкатегорий из родительской категории с указанным ID. При этом есть маленький фокус, своего рода фишка.
Например есть категории:
Фильмы ID = 2
— Русские
— Зарубежные
— Индийские :)
Сериалы ID = 3
— Завершенные
— Снимаются

И если теперь зайти в категорию "Зарубежные" (при заданном параметре parent=2), то этот пункт будет помечен классом "current":
<li><a href="#">Русские</a></li>
<li class="current"><a href="#">Зарубежные</a></li>
<li><a href="#">Индийские :)</a></li>


А так же, помимо этого можно подсвечивать и родительскую категорию при просмотре подкатегории. Но для этого родительский список категорий должен выводиться с указанным параметром parent. parent=0 - это категории первого уровня.
<ul>{include file="engine/mods/autocats.php?parent=0"}</ul>

При таком выводе, если зайти в категорию "Звершенные", то в этом списке будет подсвечена строка "Сериалы":
<li><a href="#">Фильмы</a></li>
<li class="current"><a href="#">Сериалы</a></li>

Но тут ограничение до 1 родительской категории.
Т.е. если у вас категории:
Фильмы
- Русские id=5
- - Боевик

То при просмотре категории "Боевик", категория "Фильмы" уже помеченной не будет. Пометить можно будет только категорию "Русские", если код выводится с указанием parent=5

В общем экспериментируйте, играйтесь, комбинируйте с тегами [category=...]...[/category] и я уверен, у вас получится что-то очень удобное ;)

С уважением,
Олег Александрович a.k.a. Sander
Комментарии: (18)
  1. foto
    VIP 30 июня 2016 10:51 #
    А можете подсказать, как с помощью данного модуля сделать выпадающую навигацию?
    0
    1. foto
      Администратор 30 июня 2016 10:52 #
      Не верная постановка вопроса.
      Вы сначала сделайте выпадающую навигацию, а потом в нее можно будет подставить этот модуль.
      0
  2. foto
    Клиент 8 декабря 2016 16:23 #
    Если есть возможность, добавьте рядом с названием категории количество новостей в каждой категории.
    0
    1. foto
      Администратор 12 декабря 2016 16:21 #
      Для вывода количества новостей вы можете использовать стандартный тег в DLE 11.2
      {catnewscount id="X"}

      Или воспользоваться модулем Количество новостей в категории
      0
  3. foto
    Клиент 21 апреля 2017 15:55 #
    А как сделать, чтобы остальные подкатегории не пропадали, если находишься в подкатегории
    0
  4. foto
    Посетитель 10 июля 2017 15:47 #
    Не подскажете как можно реализовать вывод подкатегорий у выводимых категорий?

    Фильмы ID = 2
    — Русские
    ——Новые
    ——Старые
    — Зарубежные
    — Индийские :)
    0
    1. foto
      Администратор 10 июля 2017 21:23 #
      Для этого нужно писать отдельную функцию
      0
  5. foto
    Посетитель 4 октября 2017 09:14 #
    Огромное спасибо за модуль, очень упростил жизнь!)
    0
  6. foto
    Гость 17 марта 2019 15:24 #
    Если нет в категории под категорий, как сделать чтоб писало подкатегорий не найдено?
    0
  7. foto
    Посетитель 2 августа 2019 14:07 #
    Добрый день! Я новичок в этих в этой теме. Подскажите, вставлять в шаблоне - main.tpl? В какой части? Вверху, внизу, или ещё где? Можно подробнее по этому вопросу. У меня, что-то ничего не получается! Спасибо!
    0
  8. foto
    Посетитель 5 октября 2019 20:34 #
    Подскажите, данный хак в последних версиях будет работать?
    0
    1. foto
      VIP 6 октября 2019 17:56 #
      Да, работает
      0
  9. foto
    Клиент 29 октября 2019 15:42 #
    Цитата: Sander
    Для вывода количества новостей вы можете использовать стандартный тег в DLE 11.2
    {catnewscount id="X"}

    Или воспользоваться модулем Количество новостей в категории


    А как к данному так сказать модулю сделать {catnewscount id="X"} ?
    0
  10. foto
    Гость 25 марта 2020 10:08 #
    Не работает на DLE 14
    0
    1. foto
      Администратор 25 марта 2020 19:34 #
      В данном коде нет ничего такого, что было бы привязано к версии DLE.
      Даже специально проверил на 14.0, всё работает.
      0
  11. foto
    Гость 12 августа 2020 10:56 #
    Цитата: Sander
    В данном коде нет ничего такого, что было бы привязано к версии DLE.
    Даже специально проверил на 14.0, всё работает.

    Подскажи как в подкатегориях выводить все подкатегории родительской категории?
    0
    1. foto
      Администратор 12 августа 2020 11:51 #
      В статье же написано.
      Пример:
      [category=3,4,5]<ul>{include file="engine/mods/autocats.php?parent=2"}</ul>[/category]

      где 2 - ID родительской категории.
      3,4,5 - список id подкатегорий
      0
  12. foto
    Гость 12 августа 2020 15:54 #
    Цитата: Sander
    В статье же написано.
    Пример:
    [category=3,4,5]<ul>{include file="engine/mods/autocats.php?parent=2"}</ul>[/category]

    где 2 - ID родительской категории.
    3,4,5 - список id подкатегорий

    Спасибо, не заметил.
    0
Добавить комментарий

Внимание! Все сообщения касающиеся техподдержки будут удалены или проигнорированы

Attention! All messages asking for technical support will be removed or ignored

  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2024.
При копировании, ссылка на источник обязательна.