loading...

Авторизация ...

Имя пользователя :
Пароль :
я всё забыл!

ХакиХАК для вывода категорий и подкатегорий в вертикальное меню средсвами css

Написал kilya, 15 января 2010 | 44 комментария | рейтинг новости не нравится   +7   нравится Версия для печати
ХАК для вывода категорий и подкатегорий в вертикальное меню средсвами css


Прошу строго не судить!
Подредактировал уже существующий в природе ХАК "Хак Вывод категорий сайта в меню"
(там было срдествами ЯВЫ - что не есть удобно - у кого то она может быть выключена)

Данный ХАК выводит категории сайта в меню средствами css

Тестировалось на DLE8.3

1) Открываем index.php (блокнотом или др.)
2) Ищем

$tpl->set('{AJAX}', $ajax);

3) Вставляем выше(вариант с подкатегориями 1-го уровня с кеш)

#-----------------------------------------#
if(file_exists(ENGINE_DIR.'/cache/cat_menu.tmp'))
{
   $cat_menu=file_get_contents(ENGINE_DIR.'/cache/cat_menu.tmp');
}
   else
{
   $sql_result = $db->query("SELECT id,alt_name,name,parentid FROM " . PREFIX . "_category WHERE parentid=0 ORDER BY posi");

   $cat_menu='<div id="menu">';
   $cat_menu.='<ul>';
   $cat_menu.='<li><a href="'.$config['http_home_url'].'" ><b>'.'Главная'.'</b></a></li>';
  
   while($row = $db->get_row($sql_result))
   {  

      $res = $db->query("SELECT id,alt_name,name,parentid FROM " . PREFIX . "_category WHERE parentid='".$row['id']."' ORDER BY posi");
    
if ($db->num_rows($res)>=1)
{
$cat_menu.='<li><a class="fly" href="'.$config['http_home_url'].$row['alt_name'].'/" alt="'.$row['descr'].'"><b> '.$row['name'].'<!--[if gte IE 7]><!--></b></a><!--<![endif]-->';
} else {
$cat_menu.='<li><a href="'.$config['http_home_url'].$row['alt_name'].'/" alt="'.$row['descr'].'"><b> '.$row['name'].'<!--[if gte IE 7]><!--></b></a><!--<![endif]-->';

        }

$cat_menu.='<!--[if lte IE 6]><table><tr><td><![endif]-->';
$cat_menu.='<ul class="level2">';
      while($row2 = $db->get_row($res))
      {


        
        $cat_menu.='<li> <a href="'.$config['http_home_url'].$row2['alt_name'].'/" alt="'.$row2['descr'].'"><b>'.$row2['name']."</b></a></li>";
        
      }
        $cat_menu.='</ul>';
        $cat_menu.='<!--[if lte IE 6]></td></tr></table></a><![endif]-->';
    $cat_menu.='</li>';    

   }

$cat_menu.='<li><a href="'.$config['http_home_url'].'feedback.html" >'."Обратная связь"."</span></a></li>";
$cat_menu.='<li><a href="'.$config['http_home_url'].'statistics.html" >'."Статистика"."</span></a></li>";
$cat_menu.='<li><a href="'.$config['http_home_url'].'rules.html" >'."Правила"."</span></a></li>";
$cat_menu.='<li><a href="'.$config['http_home_url'].'yasitemap" >'."Карта сайта"."</span></a></li>";


   $cat_menu.='</ul>';
   $cat_menu.='</div>';
   file_put_contents(ENGINE_DIR.'/cache/cat_menu.tmp',$cat_menu);
}
$tpl->set('{cat_menu}', $cat_menu);
#-----------------------------------------#

Сохраняем.

Создаем файл css - dropdown.css ложим в каталог style вашей темы
Содержимое

#menu {position:relative; z-index:500;}
#menu ul {padding:0; margin:0; list-style:none; width:90%; padding:5px; background:transparent;}
#menu ul ul {position:absolute; left:-9999px;}
#menu table {border-collapse:collapse; width:0; height:0; position:absolute; left:-1px; top:-1px;}
#menu ul li {width:98%; background:transparent;background: url("../images/quick_menu.png") no-repeat left top;}
* html #menu ul li {float:left;}
#menu ul li a {display:block; width:98%; padding:8px 10px 8px 5px; font:normal 11px verdana, sans-serif;color: #ff9209;font-weight: bold; text-decoration:none; background: url("../images/quick_menu.png") no-repeat left top; clear:left;}

/*#menu ul li a.fly {background: url("../images/quick_menu.png") no-repeat left top;}*/
#menu ul li a.fly {background: url(../images/arrow.gif) no-repeat 95% center;}


#menu ul li:hover {position:relative;}
#menu ul li a:hover {direction:ltr; background:#89a; color:#fff; border-color:#89a; position:relative;}
#menu ul li:hover > a {background:#ffa507; color:#ffffff; border-color:#89a;}

#menu ul :hover ul,
#menu ul :hover ul :hover ul,
#menu ul :hover ul :hover ul :hover ul,
#menu ul :hover ul :hover ul :hover ul :hover ul {left:100%; top:-5px;}

#menu ul :hover ul ul,
#menu ul :hover ul :hover ul ul,
#menu ul :hover ul :hover ul :hover ul ul {left:-9999px;}


Открываем main.tpl вышего шаблона перед дописываем
<link rel="stylesheet" media="all" type="text/css" href="/templates/Simple/style/dropdown.css" />


и в нужное Вам место для меню пишем
{cat_menu}


Если не корректно отображается список - проверьте файл стилей main.css
найдите

ul li {
    margin: 5px 0; padding: 0px 0 0px 14px;
    list-style-type: none;
    background: transparent url("../images/li.gif") no-repeat left 5px;
}


И ЗАМЕНИТЕ НА

ul li {
    margin: 0px 0; padding: 0px 0 0px 0px;
    list-style-type: none;
    
}



Комментарии пользователей

  Экспорт комментариев в RSS
 Сортировать по рейтингу, по дате

Написал VAT, 15 января 2010 в 22:10 плохой комментарий   +2   хороший комментарий
Новостей: 0, комментариев: 248, Пользователи
Карма:
довольно интересно, особенно хорошо, что кеш присутствует)))

Написал ixley, 15 января 2010 в 22:24 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 75, Пользователи
Карма:
всё делал как написано
выдаёт:
Fatal error: Call to undefined function: file_put_contents() in /www/rulezmov/www/htdocs/index.php on line 275


dle 8.3

Написал kilya, 15 января 2010 в 22:35 плохой комментарий   0   хороший комментарий
Новостей: 8, комментариев: 38, Пользователи
Карма:
ixley, обращайтесь к хостеру по поводу PHP->Safe_mode
если включен - віключить. Или наоборот сам уже не помню

Написал Jester, 16 января 2010 в 05:25 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 17, Пользователи
Карма:
Где же ты был раньше (

Написал kilya, 16 января 2010 в 12:14 плохой комментарий   0   хороший комментарий
Новостей: 8, комментариев: 38, Пользователи
Карма:
Jester, в каком это смысле? smile

Написал MSW, 16 января 2010 в 15:08 плохой комментарий   0   хороший комментарий
Новостей: 23, комментариев: 110, Пользователи
Карма:
зачем ещё один запрос на выборку категорий???
есть же глобальная переменная - $cat_info
просто надо её заюзать и тогда мод будет работать вобше с 0 запросами

вот пример этой функции берите на вооружение ))

http://uploadbox.com/files/64e8de775e/

Написал kilya, 16 января 2010 в 15:29 плохой комментарий   +4   хороший комментарий
Новостей: 8, комментариев: 38, Пользователи
Карма:
Ребята! ну тут уже как карта ляжет - я лишь поделился тем что для себя передела, и всем его не навязываю, а вот улучшить ХАК - я буду рад!

Написал MSW, 16 января 2010 в 15:41 плохой комментарий   +1   хороший комментарий
Новостей: 23, комментариев: 110, Пользователи
Карма:
так яж только предложил использовать более лучший вариант, который не делает никаких запросов.
а вот использовать или нет - это уже дело каждого лично.

Написал kilya, 16 января 2010 в 16:04 плохой комментарий   +1   хороший комментарий
Новостей: 8, комментариев: 38, Пользователи
Карма:
Согласен!
и по поводу запросов - делается запрос 1 раз(кешируется) - и потом работает из кеша.... если кеша нет - только тогда делает еще запрос, чтоб кеш создать.

Написал MSW, 16 января 2010 в 16:37 плохой комментарий   0   хороший комментарий
Новостей: 23, комментариев: 110, Пользователи
Карма:
ну это я вижу по коду, просто кеш то сам автоматически периодически очищается :)
а второе - если добавилась новая категория - то она появится в менюшке только спустя некоторое время, тоесть - когда удалится кеш

Написал kilya, 16 января 2010 в 22:06 плохой комментарий   0   хороший комментарий
Новостей: 8, комментариев: 38, Пользователи
Карма:
MSW, Да $cat_info - действительно интересная ...
вот только как бы стили css под нее прикрутить? У кого нибудь есть идеи?

Написал Sander1, 17 января 2010 в 15:49 плохой комментарий   +1   хороший комментарий
Новостей: 34, комментариев: 307, Пользователи
Карма: 21±
Переписал и оптимизировал код.
Используется $cat_info. Кэш. 0 запросов. Выводит также только одну подкатегорию.
Чтобы было больше - нужно стили переписывать.

Скачать

Написал Fred, 17 января 2010 в 16:12 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 56, Пользователи
Карма:
#menu ul li {width:98%; background:transparent;background: url("../images/quick_menu.png") no-repeat left top;}

Png давай

Написал kilya, 17 января 2010 в 22:53 плохой комментарий   0   хороший комментарий
Новостей: 8, комментариев: 38, Пользователи
Карма:
Sander1,
что то у меня не взелетело! что не так?

Написал Sander1, 18 января 2010 в 04:11 плохой комментарий   0   хороший комментарий
Новостей: 34, комментариев: 307, Пользователи
Карма: 21±
1. Если ничего не выводит:
Проверь, сохранились ли изменения в файлах:
index.php и engine/init.php

2. Посмотри файл кэша:
engine/cache/cat_menu_theme.tmp
Если файл engine/modules/cat_menu.php подключен (в файле engine/init.php), в кэше по-любому что-то должно быть.

Написал kilya, 18 января 2010 в 09:57 плохой комментарий   0   хороший комментарий
Новостей: 8, комментариев: 38, Пользователи
Карма:
Урра! єто моя оплошность - забыл убрать предыдущую выборку категорий с этой же переменной!!!

Всего чуть чуть стиль поправил - для себя, может кому лучше покажется
dropdown.css
+ мои графические файлы для меню
quick_menu.png
arrow.gif

Написал MeTaTRoN, 18 января 2010 в 22:17 плохой комментарий   -1   хороший комментарий
Новостей: 0, комментариев: 78, Пользователи
Карма:
kilya, вот уж чисто хочешь накрутить счётчик


выложи куда нибудь в другое место


Цитата: Sander1
1. Если ничего не выводит:
Проверь, сохранились ли изменения в файлах:
index.php и engine/init.php

причём тут init.php если он вообще не затрагивается в установке

Вообщем ни хрена не работает
Когда наводишь на категорию, под категорию он не выводит

Написал kilya, 19 января 2010 в 00:21 плохой комментарий   0   хороший комментарий
Новостей: 8, комментариев: 38, Пользователи
Карма:

Написал azaq3, 19 января 2010 в 00:40 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
MeTaTRoN,
+1

Написал Maclay, 19 января 2010 в 05:46 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
Что-то совсем не правильно отображается)) убежало вниз по всем блокам)

Написал MeTaTRoN, 19 января 2010 в 08:03 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 78, Пользователи
Карма:
Я конечто могу допускать, что у меня руки растут не оттуда, но всё таки нифига не пашет
kilya, Глянь всё таки, может, что ещё не хватает, но при наведении на главную категорию под категория не пашет.
Кстати говоря мод выглядит лучше без quick_menu.png

Написал kilya, 19 января 2010 в 09:44 плохой комментарий   0   хороший комментарий
Новостей: 8, комментариев: 38, Пользователи
Карма:
все работает просто замечательно - My Webpage.
1) dropdown.css положите радом со всеми css файлами - а это директория - style(вашей темы)
2) в файле main.tpl



В стиле сами смотрите - png можете заменить на цвет
3) положите cat_menu.php в engine\modules\cat_menu.php
4) В файле index.php
После строки:
$tpl->set ( '{topnews}', $topnews );

Вставить:
$tpl->set ( '{cat_menu}', $cat_menu );


И в файле (main.tpl) в нужное Вам место для меню пишем
{cat_menu}

Написал azaq3, 19 января 2010 в 11:16 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
Прикольно... то жхочу что б так работала -но нифига... и руки кривыми не были вроде никогда... та же трабла что и у MetatRon...

Написал jackman, 19 января 2010 в 16:26 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 2, Пользователи
Карма:
Ребят,скажите как поправить это дело? :)
видите,не хочет никак выходить из под блока

Написал kilya, 19 января 2010 в 20:35 плохой комментарий   0   хороший комментарий
Новостей: 8, комментариев: 38, Пользователи
Карма:
jackman,
Поєкспериментируйте с
#menu {position:relative; z-index:500;}


где z-index:?? - у вас может быть требует большего значения - подробнее об этом параметре через гугл

Написал MSW, 19 января 2010 в 20:59 плохой комментарий   0   хороший комментарий
Новостей: 23, комментариев: 110, Пользователи
Карма:
да какбы с z-index не игрались, но проблема в том что флешки будут всегда выше
но на помощь может прийти яваскрипт, который флешки позволит перемещать ниже. токо не помню как называется он... опять же надо искать в гугле его))

Написал jackman, 19 января 2010 в 23:04 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 2, Пользователи
Карма:
kilya,Большое спасибо!Попробую

Написал kilya, 20 января 2010 в 09:40 плохой комментарий   0   хороший комментарий
Новостей: 8, комментариев: 38, Пользователи
Карма:
Господа!

Атрибут wmode дает возможность разместить html-блок (div, javascript-меню и т.д.) над flash-объектом, И ЭТО РАБОТАЕТ ВЕЗДЕ, достаточно только использовать значение opaque параметра «wmode»:


http://blog.ozerov.kiev.ua/2009/03/14/div-поверх-flash/

Написал MeTaTRoN, 20 января 2010 в 18:14 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 78, Пользователи
Карма:
БЛИИИН Перековырял весь твой шаблон, и разобрался почему не пашет, по крайней мере у меня.

Может и другим поможет.


в main.tpl вставьте перед <html> вот это:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Написал arh-info, 21 января 2010 в 00:47 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
Народ, а как все-таки сделать чтобы под- подуровень показывался?
С грехом пополам запустился (спасибо MeTaTRoN), но очень надо подподуровень в подуровне :)
Заранее прошу: писать как можно понятнее ah

Написал azaq3, 22 января 2010 в 21:50 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
MeTaTRoN,
Спасибо тебе приогромное - теперь все пашет!!! smile

Написал kilya, 25 января 2010 в 12:25 плохой комментарий   0   хороший комментарий
Новостей: 8, комментариев: 38, Пользователи
Карма:
На днях решил опробовать иной шаб - и та же проблема как и у многих!!

Проверьте свой main.css или (и) blocks.css- если есть вот это overflow: hidden; в структуре блоков
примерно тут (но у каждого могут отличаться)-
/*СТРУКТУРА БЛОКОВ*/
.container,
.rightside,
.leftside,
.centersideinn { overflow: hidden; }


overflow: hidden; - убрать!!!

И будет счастье!

Написал tretezkii, 27 января 2010 в 02:48 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
Ребят, помогите настроить, вроде все сделал как надо... а меню не раскрывается хоть убейсо!

Написал h2kor, 29 января 2010 в 01:43 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
ребят а можно как нито сделать без cat_menu.tmp а то у меня в этом файле категории верхнего всплываюшего меню. А мне надо разделы бокового меню.

Написал MeTaTRoN, 31 января 2010 в 02:22 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 78, Пользователи
Карма:
напиши лучше на тройные подкатегории

Информация



Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
Анализ Тиц и PR сайта