Модуль Модуль «Динамическое меню» v.1.0

Тема в разделе "DLE", создана пользователем sergeysnl, 12 фев 2009.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.1 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. sergeysnl

    sergeysnl Читатель

    Заблокирован
    Регистр.:
    10 фев 2008
    Сообщения:
    331
    Симпатии:
    100
    Модуль используется для создания динамического меню сайта для движка DataLife Engine.

    Модуль позволяет:

    1. Создавать ссылки на публикации с учетом настроек сайта
    2. Управлять порядком следования пунктов меню
    3. Неограниченный уровень вложения
    4. Создавать неограниченное количество меню для сайта с индивидуальными шаблонами

    Описание модуля:

    $uid - идентификатор уникальный для каждого вызова данного модуля в рамках сайта (значение по умолчанию 0)
    $folder - отправная точка для отрисовки меню. Принимает значения АдминПанель->Категории->ID (тип int значение по умолчанию 0). Тоесть $folder задает родительскую категорию а в меню будут выводиться все дочерние категории до заданной глубины вложения. При $folder=0 (значение по умолчанию) будут выводиться все категории до заданной глубины вложения.
    $startview - указывает на то отображать ли в меню ссылку на главную страницу сайта (1 - отображать, 0 - не отображать значение по умолчанию 1). Актуально только в случае когда $folder=0.
    $template - задает шаблон используемый для отрисовки меню (значение по умолчанию "dm-level-1")
    $notview - задает через запятую идентификаторы категорий которые недолжны отображаться в меню (дочерние документы данной категории отображаться токже небудут) принимает значения АдминПанель->Категории->ID[1],АдминПанель->Категории->ID[1],... (значение по умолчанию null)
    $cache_file - задает имя кэш-файла (значение по умолчанию menu)
    Порядок следования пунктов меню задается параметром АдминПанель->Категории->Position, может принимать как положительные так и отрицательные значения.
    menu_view($m=null, $folder=null, $template=null) - вспомогательная функция для отрисовки меню следующего уровня $m - массив содержащий информацию обовсех категориях, $folder - id родительской категории, $template - задает шаблон используемый для отрисовки меню.

    Примеры вызова модуля:

    {include snippet="menu.php" param=""}
    {include snippet="menu.php" param="uid=1&folder=11&template=dm-level&notview=12,13&cache_file=dm-cache"}
    {include snippet="menu.php" param="uid=23&template=dm-level"}


    Примеры шаблонов меню:

    В качестве шаблонизатора используется PHP-native в шаблон из скрипта передаются следующие переменные:
    folder - id родительской категории (отправная точка для отрисовки меню)
    catid - id активной категории, используется для подсветки активного пункта меню
    cat - массив содержащий информацию обовсех категориях
    menu - массив содержащий информацию о категориях которые необходимо отрисовать для данного уровня

    PHP:
    <?#шаблон dm-level-1?>
    <ul class="level<?=$this->folder?>">
    <?foreach ($this->menu as $val):?>
    <li><a href="/<?=$val['link']?><?=$val['alt_name']?>"><?=$val['name']?><?if($val['count'] > 0):?>(<?=$val['count']?>)<?endif?></a>
    <?=menu_view($this->cat,$val['id'],'dm-level-1')?>
    </li>
    <?endforeach?>
    </ul>
    Простейший пример, меню отрисовывает начиная с уровня $folder на неограниченный уровень вложенности. Отрисовка происходит рекурсивно фукция menu_view вызывается с параметром $template=dm-level-1 тоесть в шаблоне dm-level-1 вновь вызывается шаблон dm-level-1 и так до тех пор, уровень за уровнем, пока для заданного $folder не закончатся дочерние категории. Это самый простой случай, однако при таком подходе нельзя ограничить глубину вложенности.

    Если нам необходимо создать одно-уровневое меню, то из шаблона dm-level-1 достаточно удалить строку <?=menu_view($this->cat,$val['id'],'dm-level-1')?>, тоесть вывод подкатегорий производится не будет. Если требуется двух-уровневое меню, то функция menu_view вызывается с параметром $template=dm-level-2 и создается соответствующий шаблон для меню второго уровня, при этом в dm-level-2 функцию menu_view не используем. Если требуется трех-уровневое меню то в шаблоне dm-level-2 функция menu_view вызывается с параметром $template=dm-level-3 и создается соответствующий шаблон для меню третьего уровня. данный подход схематически можно отобразить так: dm-level-1->dm-level-2->dm-level-3->...->dm-level-n. Минусом данного подхода является большое количество шаблонов меню, а точнее, на каждый уровень меню один шаблон, однако это является также и плюсом, можно реализовать практически любую дизайнерскую идею.


    Установка:

    1. Поместите содержимое архива в папку snippets.

    2. Файл snippets/menu/dm-level-1.tpl (стандартный шаблон) переместите в папку с DLE шаблонами.

    Установка завершена.

    Чтобы вызвать модуль воспользуемся подстановкой {include snippet="menu.php" param=""}

    Скачать:
    _ttp://www.rapidspread.com/file.jsp?id=wrcedleksf

    Demo:
    _ttp://poligon.dle-hack.ru/mainmenu.html
     
    Shotlandec нравится это.
  2. bukа

    bukа Писатель

    Заблокирован
    Регистр.:
    23 окт 2008
    Сообщения:
    446
    Симпатии:
    138
    Можете демку показать, а то я что-то ничего не понял что делает этот модуль:nezn:
     
  3. sergeysnl

    sergeysnl Читатель

    Заблокирован
    Регистр.:
    10 фев 2008
    Сообщения:
    331
    Симпатии:
    100
    Вот на сайте откуда брал есть Demo, насколько я понял это как в Joomla вывод меню через админку. Главное под себя настроить стили css, Т.к. выводит древообразным стилем. Вот демо:
    _ttp://poligon.dle-hack.ru/mainmenu.html
     
Статус темы:
Закрыта.