Хак [хак] Автоматически генерируемое меню с подсветкой активной категории 0.2

Тема в разделе "DLE", создана пользователем JC, 31 мар 2008.

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

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

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

    JC Бог пикселей

    Регистр.:
    4 янв 2008
    Сообщения:
    303
    Симпатии:
    401
    1. В engine.php добавить в конец файла:

    PHP:
    /*************** start aktmenu ******************/
    if ($config['speedbar'] AND !isset($view_template))
    {
    $c get_vars('category');
    $currentcat get_url($category_id);

    if (empty(
    $nam_e) and (empty($currentcat))) {$tpl->result['categories'] .= '<li><a class=active href="/" title="Главная"><span>Главная</span></a></li>';}
    else {
    $tpl->result['categories'] .= '<li><a href="/" title="Главная"><span>Главная</span></a></li>';}

    foreach(
    $c as $key => $value){
    if (
    $nam_e == $value['name'] or ($currentcat == $value['alt_name'])) {$tpl->result['categories'] .= '<li><a class=active href="'.$config['http_home_url'].$value['alt_name'].'/" title="'.$value['name'].'"><span>'.$value['name'].'</span></a></li>';}
    else {
    $tpl->result['categories'] .= '<li><a href="'.$config['http_home_url'].$value['alt_name'].'/" title="'.$value['name'].'"><span>'.$value['name'].'</span></a></li>';}
                                 }
    }
    /*************** end aktmenu ******************/
    2. В index.php после

    PHP:
    $tpl->set('{speedbar}'$tpl->result['speedbar']);
    Вставить:

    PHP:
      $tpl->set('{categories}'$tpl->result['categories']);
    3. В main.tpl вставить:

    PHP:
    <!-- Навигация aktmenu -->
      <
    div class="menu">
      <
    ul>{categories}</ul>
      </
    div>
    <!-- /
    Навигация aktmenu -->
    4. В style.css вставить

    PHP:
    /* start aktmenu */
    .menu {floatleftheight44pxwidth100%; background:url("../images/menu/menu_bottom.gif"repeat-x bottom;}
    .
    menu ul {margin0 0 0 16px; list-style-type:none;}
    .
    menu li {displayblockfloatleftheight47pxtext-align:center;}
    .
    menu li a {displayblockfloatleftheight35pxmargin0 2px 0 0color#fff; background:#27343C url("../images/menu/left_bg.gif") no-repeat top left; text-decoration:none; border-bottom: 1px solid #F68A20;}
    .menu li a span {background:url("../images/menu/right_bg.gif"no-repeat top rightpadding0margin0padding10px 20pxfontbold 15px/38px Arialsans-serif;}
    html>body .menu li a span {padding10px 21px;}
    .
    menu li a span.last {padding-left22pxpadding-right23px;}
    .
    menu li a.active {background#ac3f20 url("../images/menu/active_left_bg.gif") no-repeat top left; border-bottom: 1px solid #ac3f20;}
    .menu li a.active span {background:url("../images/menu/active_right_bg.gif"no-repeat top right;}
    /* end aktmenu */
    5. В папку «ваш шаблон/images/» распаковать архив с оформлением кнопок.

    Скачать Архив:
    http://rapidshare.com/files/103791456/menu.zip.html
     
    Nous нравится это.
  2. Sland

    Sland ПротNв те4ениR

    Регистр.:
    15 дек 2006
    Сообщения:
    183
    Симпатии:
    156
    Автоматически генерируемое меню с подсветкой активной категории v0.2

    Автоматически генерируемое меню с подсветкой активной категории v0.2

    [​IMG]

    Заметка на полях:
    Видимо, не все поняли, что этот хак выводит категории обычным li-списком. То есть оформить его можно как угодно, а не только так, как я предложил в хаке первой редакции :) Внешний вид меню оформляется через CSS, например так:

    [​IMG]

    Инструкция.

    1. В engine.php в конец файла добавляем

    PHP:
    /* autocat v0.2 start */

    if ($config['speedbar'] AND !isset($view_template))
    {
    $c get_vars('category');
    $currentcat get_url($category_id);
    $parid get_par($category_id); // эту функцию нужно создать в functions.php

    /* сначала определим вывод "главной" кнопки. Если переменная категории пустая - значит, мы на главной, и делаем её активной */
    if (empty($nam_e) and (empty($currentcat))) {$tpl->result['categories'] .= '<li><a class=active href="/" title="Главная"><span>Главная</span></a></li>';}
    else {
    $tpl->result['categories'] .= '<li><a href="/" title="Главная"><span>Главная</span></a></li>';}

    /* сортируем категории по уровням и подсветке */

    foreach($c as $key => $value) {
    // Категории 1 уровня:
      
    if ($value['parentid'] == "0") { // если родительская категория = 0, то есть если категория верхнего уровня
                
    if (($parid == $value['id']) or ($nam_e == $value['name'])) { // если номер категории совпадает с текущим родительским номером, или имя категории совпадает с текущим
                        
    $tpl->result['categories'] .= '<li><a class=active href="'.$config['http_home_url'].$value['alt_name'].'/" title="'.$value['name'].'"><span>'.$value['name'].'</span></a></li>'/* вывести категорию с подсветкой */ }
                else {
                        
    // или обычным списком
                        
    $tpl->result['categories'] .= '<li><a href="'.$config['http_home_url'].$value['alt_name'].'/" title="'.$value['name'].'"><span>'.$value['name'].'</span></a></li>';
                     }
    // Категории 2 уровня:                                
                                                         
    }
      else {
    if (
    $category_id == $value['parentid']){
                         
    $tpl->result['sub_categories'] .= '<li><a href="'.$config['http_home_url'].$value['alt_name'].'/" title="'.$value['name'].'"><span>'.$value['name'].'</span></a></li>';
                                           }
          if (
    $parid == $value['parentid']) { // если родительские категории совпадают
          
                      
    if (($category_id == $value['id']) or ($nam_e == $value['name'])) { // и если совпадает текущее имя категории
                        // вывести категорию с подсветкой                  
                        
    $tpl->result['sub_categories'] .= '<li class=active><a href="'.$config['http_home_url'].$value['alt_name'].'/" title="'.$value['name'].'"><span>'.$value['name'].'</span></a></li>';
                                                    }
                      else                          {
                         
    // или обычным списком
                         
    $tpl->result['sub_categories'] .= '<li><a href="'.$config['http_home_url'].$value['alt_name'].'/" title="'.$value['name'].'"><span>'.$value['name'].'</span></a></li>';
                                                    }
                                            }
                                  }
                                            }
    }
    2. В index.php после
    PHP:
    $tpl->set('{speedbar}'$tpl->result['speedbar']);
    добавляем
    PHP:
    $tpl->set('{categories}'$tpl->result['categories']);
    $tpl->set('{sub_categories}'$tpl->result['sub_categories']);
    3. В functions.php перед
    PHP:
    function get_categories ($id) {
    добавляем
    PHP:
    function get_par ($id) {
      global 
    $cat_info;
      if (!
    $id) return;
        
    $par $cat_info[$id]['parentid'];
      return 
    $par;
    }
    4. В main.tpl для вывода родительских категорий используем тег
    PHP:
    {categories}
    а для второго уровня, соответственно,
    PHP:
    {sub_categories}
     
    Nous, Padonok №1 и eshkin нравится это.
  3. Kentbrn

    Kentbrn Постоялец

    Регистр.:
    11 мар 2007
    Сообщения:
    134
    Симпатии:
    14
    Как сделать ЗАпрет на показ некоторых категорий!?..И как вставить дополнительную ссылку на например ,форум !?
     
  4. HalliK

    HalliK Постоялец

    Регистр.:
    4 фев 2007
    Сообщения:
    117
    Симпатии:
    166
    ПС

    Сказано же - выводит обычным li списком:) Для решения твоей задачи нужно всего лишь вставить после {categories} <li><a href="/forum/">Форум</a></li> и всё должно заработать:)

    P.S. Че то забылся, ответил на второй вопрос, про запрет не знаю )
     
  5. Pashok1

    Pashok1 Постоялец

    Регистр.:
    24 янв 2008
    Сообщения:
    62
    Симпатии:
    2
    Хорошая тема :)
    а кто встречал выпадающее меню для ДЛЕ?
     
  6. HalliK

    HalliK Постоялец

    Регистр.:
    4 фев 2007
    Сообщения:
    117
    Симпатии:
    166
    Выпадающее меню делается при помощи html + CSS (для эффектов можно и JS приплюсовать), соответственно DLE здесь не причем:) Это реализуется с помощью вложенных <ul> и <li>.

    P.S. Давай не будем флуд разводить, по всем вопросам пиши в личку, постараюсь ответить;)
     
  7. Trial

    Trial

    Регистр.:
    27 май 2008
    Сообщения:
    175
    Симпатии:
    8
    Кто может подскажите ответ на несколько вопросов:
    1) Можно ли сделать подобное меню на CSS (имею виду меню в две строки, в котором вторая строка появлялась бы после наведения на пункт первой строки), как сделать выпадающее меню в столбик я и сам знаю.
    2) Расскажите как сделать запрет на показ некоторых категорий?
    3) Поисковики интерпретируют такое меню (не CSS естественно, а то которое в примере)?
     
  8. gentoouser

    gentoouser

    Регистр.:
    8 окт 2007
    Сообщения:
    187
    Симпатии:
    63
    1) можно. редактируй стили для своих нужд. меню в две строки уже было.
    2) $currentcat = get_url($category_id); вот здесь сделать проверку на валидность id
    т.е. if ($category_id!=id_ненужной_категории) or ($category_id!=id_ненужной_категории_2) $currentcat = get_url($category_id);
    3) конечно.
     
    Trial нравится это.
  9. Padonok №1

    Padonok №1 Постоялец

    Регистр.:
    20 апр 2007
    Сообщения:
    89
    Симпатии:
    51
    ребята вы бы не задавали глупых вопросов... пошарьесь по поисковикам и вы найдет 100 вариантов CSS менюшек... таких от которых будеть рвать и метать :)))
    посмотрите там код, если вы хотя бы HTML знайте думаю собразите что к чему и зачем!
     
  10. gentoouser

    gentoouser

    Регистр.:
    8 окт 2007
    Сообщения:
    187
    Симпатии:
    63
    а вот ты бы не флудил в теме.

    зачем шариться, если есть уже готовый вариант, который точно так же нужно привести до вида конфетки, как и те, которые найдутся в поисковике.
     
Статус темы:
Закрыта.