• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

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

Статус
В этой теме нельзя размещать новые ответы.

JC

Бог пикселей
Регистрация
4 Янв 2008
Сообщения
303
Реакции
411
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 {float: left; height: 44px; width: 100%; background:url("../images/menu/menu_bottom.gif") repeat-x bottom;}
.menu ul {margin: 0 0 0 16px; list-style-type:none;}
.menu li {display: block; float: left; height: 47px; text-align:center;}
.menu li a {display: block; float: left; height: 35px; margin: 0 2px 0 0; color: #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 right; padding: 0; margin: 0; padding: 10px 20px; font: bold 15px/38px Arial, sans-serif;}
html>body .menu li a span {padding: 10px 21px;}
.menu li a span.last {padding-left: 22px; padding-right: 23px;}
.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/» распаковать архив с оформлением кнопок.

Скачать Архив:
 
  • Нравится
Реакции: Nous
Автоматически генерируемое меню с подсветкой активной категории v0.2

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

image3il5.jpg


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

image2bk5.jpg


Инструкция.

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}
 
Как сделать ЗАпрет на показ некоторых категорий!?..И как вставить дополнительную ссылку на например ,форум !?
 
ПС

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

P.S. Че то забылся, ответил на второй вопрос, про запрет не знаю )
 
Хорошая тема :)
а кто встречал выпадающее меню для ДЛЕ?
 
Выпадающее меню делается при помощи html + CSS (для эффектов можно и JS приплюсовать), соответственно DLE здесь не причем:) Это реализуется с помощью вложенных <ul> и <li>.

P.S. Давай не будем флуд разводить, по всем вопросам пиши в личку, постараюсь ответить;)
 
Кто может подскажите ответ на несколько вопросов:
1) Можно ли сделать подобное меню на CSS (имею виду меню в две строки, в котором вторая строка появлялась бы после наведения на пункт первой строки), как сделать выпадающее меню в столбик я и сам знаю.
2) Расскажите как сделать запрет на показ некоторых категорий?
3) Поисковики интерпретируют такое меню (не CSS естественно, а то которое в примере)?
 
1) можно. редактируй стили для своих нужд. меню в две строки уже было.
2) $currentcat = get_url($category_id); вот здесь сделать проверку на валидность id
т.е. if ($category_id!=id_ненужной_категории) or ($category_id!=id_ненужной_категории_2) $currentcat = get_url($category_id);
3) конечно.
 
ребята вы бы не задавали глупых вопросов... пошарьесь по поисковикам и вы найдет 100 вариантов CSS менюшек... таких от которых будеть рвать и метать :)))
посмотрите там код, если вы хотя бы HTML знайте думаю собразите что к чему и зачем!
 
а вот ты бы не флудил в теме.

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