Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Модули для DLE » Автоматический вывод подкатегорий

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


     07.03.2016    Sander, категории, подкатегории    Модули для DLE    6110    12 комментариев

Краткая информация о модуле (хаке)

Автор: Sander
Версия DLE: почти любая
Цена: Бесплатно
Этот простенький модуль предназначен, чтобы хоть немножечко упростить жизнь администраторов и/или разработчиков сайтов.
Не смотря на то, что модуль довольно таки простой, ему можно найти довольно много вариантов применения. Тут уже у кого на сколько хватит фантазии, в пределах возможностей модуля конечно :)

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

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


Теперь в шаблоне можно подключать следующим образом:
<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] и я уверен, у вас получится что-то очень удобное ;)

Если этот модуль оказался вам полезен, буду рад "чаевым" в любых размерах =)
Z753504041409
R181268656057

С уважением,
Олег Александрович a.k.a. Sander

12 комментариев

sher
Юзер

sher - 8 марта 2016 00:49 -

Может Qiwi кошелек есть? :) Подошел в самый раз. На bootstrap делаю шаблон, так там нужно расположить в три колонки 17 пунктов меню. Поиграл немного со стилями, все получилось. В код вывода немного добавил классов необходимых.

Sander
PHP-developer

Sander - 8 марта 2016 02:12 -

Рад, что модуль все же пригодился :)
Был qiwi кошелек, но некоторое время им не пользовался и его удалили. Оказалось, что для них это в порядке вещей, даже если на кошельке есть деньги. Больше с qiwi дел предпочитаю не иметь.

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

Proff
Юзер

Proff - 8 марта 2016 07:17 -

А чем плохи папки modules и inc, предназначенные под модули Создателем? )

Sander
PHP-developer

Sander - 9 марта 2016 00:50 -

Если поставить и забыть - то вообще без разницы, хоть сразу внутрь dle прописывать.
А вот обслуживать и обновлять уже довольно неудобно.

Это как с носками. Можно раскидать по всей квартире, хоть на люстру вешать. Свою функциональность от этого носки не потеряют. А можно аккуратно сложить в отдельный ящик.

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

Proff
Юзер

Proff - 9 марта 2016 04:19 -

Ну не знаю... Собственно папка modules для того и есть. А делать отдельную, только из-за того, что родных модулей много - так и новую mods засрать сторонними модулями можно.
PS: у меня носки с трусами в одном ящике, и не конфликтуют ))

Sharkw810
Юзер

Sharkw810 - 8 марта 2016 19:36 -

У вас не был указан в autocats.php закрывающий тег </a> в 3х местах, а так скрипт то что доктор прописал, давно искал)

Sander
PHP-developer

Sander - 9 марта 2016 00:53 -

Упс :)
Спасибо, исправил.

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

Sharkw810
Юзер

Sharkw810 - 9 марта 2016 23:24 -

Можно ли реализовать чтобы этот скрипт при генерации списка категорий, автоматически сортировал их в алфавитном порядке? Ато чтобы не получалась каша, при каждом добавлении категории в админке, приходиться пересортировывать, у меня просто для каждого сериала на сайта - отдельная категория, ручками каждый раз пересортировывать - то забуду то ещё что, да и просто банально лень. Великие длешники что-то никак не реализуют сортировку категорий, по крайней мере на сайте где у меня стоит скрипт dle 10.3, там такого не нашел, да и в предыдущих версиях не замечал. Или посоветуйте хак на сортировку категорий, буду очень признателен.

serg91100
Юзер

serg91100 - 31 марта 2016 15:56 -

Отлично! Не подскажите, как сюда же добавить кол-во новостей в каждой категории?
То есть вот так:
Комедии 88
Выводится категория, а справа кол-во материалов в этой категории. Заранее спасибо!

wcw2007
Юзер

wcw2007 - 10 ноября 2016 20:38 -

кеша очень не хватает

orlov_evgeni
Юзер

orlov_evgeni - 3 июля 2017 21:42 -

Ребят, а как вывести количество материалов в подкатегории?

pdaeks
Юзер

pdaeks - 31 мая 2019 18:33 -


Модуль классный, но возникла проблемка, категории выводятся на страницы добавления новостей(их несколько, но не в этом суть).

Чтобы комментировать - войдите или зарегистрируйтесь на сайте
наверх