B@RT 0 Опубликовано: 11 июля 2007 Рассказать Опубликовано: 11 июля 2007 Интересует мод/хак для меню, чтобы можно было получить сворачивающееся меню. Пример _http://busyteacher.org Тоесть, если нажать на "+", то категория разворачивается и можно увидеть подкатегории.. Преимущество в том, что не используется java и нет нагрузки на базу... собственно это больше критерий. Можетъ кто выложит или даст ссылку, откуда скачать подобный мод. Заранее благодарен. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 11 июля 2007 Рассказать Опубликовано: 11 июля 2007 (изменено) Java не используется, но java script как раз <script language=Javascript type=text/javascript> var prefixCategory="cat"; var prefixImgCat="imgCat"; function ShowHideCategory(index) { var folderDIV=document.getElementById(prefixCategory+index); var imgObject=document.getElementById(prefixImgCat+index); if (folderDIV==null || imgObject==null) return false; if (imgObject.src.indexOf("folder_minus.gif")==-1) { imgObject.src="/images/folder_minus.gif"; folderDIV.style.display="block"; } else { imgObject.src="/images/folder_plus.gif"; folderDIV.style.display="none"; } return true; } function goToCategory(route) { var listCategory=route.split(","); for (var i=0;i<listCategory.length;i++) ShowHideCategory(listCategory[i]); return true; } </SCRIPT>[/html] Изменено 11 июля 2007 пользователем lifestar Цитата Ссылка на сообщение Поделиться на других сайтах
B@RT 0 Опубликовано: 11 июля 2007 Рассказать Опубликовано: 11 июля 2007 Автор хорошо, как можно еще реализовать подобное меню, только с минимальной нагрузку на базу? и по ходу дела, разбирая выше приведенный пример столкнулся с проблемой: я использую в меню, у каждого пункта фон кнопки (и в стилях dysplay:block). Из-за этого кнопка "свернуть/развернуть" переезжает выше кнопки с категорией. Если в стилях прибить фон, то все норм. Так же изменения dysplay: inline в FireFox'е приводит к глюку - фон просто обтягивает надпись... Внимание вопрос: как реализовать все это дело + фон? Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 11 июля 2007 Рассказать Опубликовано: 11 июля 2007 а зачем вам плюсик загонять в фон? Выводите обычным <img src...> Цитата Ссылка на сообщение Поделиться на других сайтах
B@RT 0 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 Автор дык, неправильно поняли.... мне плюсик загонять в фон не надо, плюсик и так стоит отдальным изображением. Сейчас попытаюсь обьяснить еще раз. Если пункт меню использует картинку как фон, то этот самый плюсик появляется не с лева, а вверху пунтка меню. Это обусловленно тем, что в стилях меню стоит опция display:block. block - Элемент показывается как блочный. Применение этого значения для встроенных элементов, например тега <SPAN>, заставляет его вести подобно блокам — происходит перенос строк в начале и в конце содержимого. Если заменить block на inline, то плюсик появляется там, где надо, только происходит глюк в фаерфоксе (причем везде): фон за пунктом меню становиться не таким размером, как я задавал, а просто обтягивает надпись... Вот меня и интересует, есть ли еще варинт решения.....? Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 вы мне лучше код напишите - понятнее будет Цитата Ссылка на сообщение Поделиться на других сайтах
B@RT 0 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 Автор а зачем вам плюсик загонять в фон? Выводите обычным <img src...> Это стиль менюхи: a.mainlevel:link, a.mainlevel:visited { display: block; font-size: 10px; font-weight: bold; color: #FFFFFF; font-family: Tahoma, Helvetica, sans-serif; text-transform: uppercase; text-align: left; height: 23px; line-height: 23px; width: 162px; text-decoration: none; margin-top: 1px; margin-bottom: 1px; text-indent: 10px; background-image: url(../images/mainlevel_up.jpg); background-repeat: no-repeat; background-position: left; } a.mainlevel:hover { background-image: url(../images/mainlevel_over.jpg); } a.mainlevel#active_menu { background-image: url(../images/mainlevel_sub.jpg); color: #FFFFFF; } a.mainlevel#active_menu:hover { background-image: url(../images/mainlevel_sub.jpg); color: #FFFFFF; } Вот собственно сам код, который выводит менюху: <script language=Javascript type=text/javascript> var prefixCategory="cat"; var prefixImgCat="imgCat"; function ShowHideCategory(index) { var folderDIV=document.getElementById(prefixCategory+index); var imgObject=document.getElementById(prefixImgCat+index); if (folderDIV==null || imgObject==null) return false; if (imgObject.src.indexOf("folder_minus.gif")==-1) { imgObject.src="/images/folder_minus.gif"; folderDIV.style.display="block"; } else { imgObject.src="/images/folder_plus.gif"; folderDIV.style.display="none"; } return true; } function goToCategory(route) { var listCategory=route.split(","); for (var i=0;i<listCategory.length;i++) ShowHideCategory(listCategory[i]); return true; } </SCRIPT> Вот что получаю: ссылка на депозит: http://depositfiles.com/files/1201419 Вот эта зеленая кнопка должна быть слевой стороны, а не сверху.... Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 вы не так мне показываете... качать я ничего не буду. Как надо: 1. суть проблемы 2. картинка 3. код, отвечающий за этот участок Цитата Ссылка на сообщение Поделиться на других сайтах
B@RT 0 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 Автор 1. 3 раз пишу одно и тоже..... Проблема в том, что кнопка, отвечающая за сворачивание/разворачивание меню выводится сверху основного пункта меню, а не слева. 2. По ссылке лежит jpg картинка..... я просто незнаю, куда ее можно залить. 3. Весь код я написал в предыдущем своем посте. (1. код css, который выводит фон пункта меню, 2. код в шаблоне, который рисует кнопку свернуть/развернуть). Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 таким образом вы никогда не допрёте... Во-первых, код в шаблоне, который рисует кнопку свернуть/развернуть - неправильно. Не этот код выводит "менюху". Дайте код и тогда помогу =) Цитата Ссылка на сообщение Поделиться на других сайтах
kenpark 0 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 де-то я видел такая штука продавалась...пример был как раз на сайте, упомянутом в первом посте... Цитата Ссылка на сообщение Поделиться на других сайтах
B@RT 0 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 Автор Да, модуль платный, но своих денег не стоит.... Вобщем, я сегодня добрый, вот весь модуль: engine/modules/menu.php <?php ===================================================== Модуль для DataLife Engine ----------------------------------------------------- Made by BDSoft ICQ 1-454-461 E-Mail: BDSoft@mail.ru http://www.myws.ru/ ----------------------------------------------------- Copyright (c) 2007 BDSoft ===================================================== Данный код защищен авторскими правами ===================================================== if(!defined('DATALIFEENGINE')) { die("Hacking attempt!"); } function Menu($categoryid = 0, $parentid = 0, $nocat = TRUE, $sublevelmarker = '', $returnstring = '',$ret1='') { global $cat_info, $user_group, $member_id; $allow_list = explode (',', $user_group[$member_id['user_group']]['allow_cats']); $spec_list = explode (',', $user_group[$member_id['user_group']]['cat_add']); $root_category = array(); if($parentid == 0) {$subcat = false; } else { $sublevelmarker .= ' '; $fx1.='<div class="tmhelp_th_category" id="cat'.$parentid.'">';$fx2.='</div>'; } if (count($cat_info)) { foreach ($cat_info as $cats) { if ($cats['parentid'] == $parentid) $root_category[] = $cats['id']; } if (count($root_category)) { $returnstring .= $fx1; foreach ($root_category as $id) { $i++; if ($allow_list[0] == "all" OR in_array($id, $allow_list)) { if ($spec_list[0] == "all" OR in_array($id, $spec_list)) $color = "dark"; else $color = "red"; if($parentid == 0) { $menu_url = $cat_info[$id]['alt_name']; } else { $menu_url = $cat_info[$cat_info[$id]['parentid']]['alt_name'].'/'.$cat_info[$id]['alt_name']; } foreach ($cat_info as $subcat) { if ($subcat['parentid'] == $id) $fx5 = true; } if ($fx5){ $fx3='<div style="display:inline;"><img id="imgCat'.$id.'" onclick="ShowHideCategory('.$id.')" alt="" src="{THEME}/images/down.jpg" /> '; $fx4=' </div>'; } else { $fx3='<div>'; $fx4='</div>'; } $returnstring .= $fx3.'<a href="/'.$menu_url.'" class="mainlevel">'.$cat_info[$id]['name'].'</a>'.$fx4; } $fx5 = false; $returnstring = Menu($categoryid, $id, $nocat, $sublevelmarker, $returnstring); } $returnstring .= $fx2; } } return $returnstring; } if ($category_id){ $fx10=$category_id; while(1) { $fx10 = $cat_info[$fx10]['parentid']; $fx8 .='ShowHideCategory('.$fx10.');'; if ($cat_info[$fx10]['parentid'] == 0)break; } $fx9 .= '<script language=javascript type=text/javascript>ShowHideCategory('.$category_id.');'.$fx8.'</SCRIPT>';} $menu = Menu().$fx9; ?> Вставляется в то место, где должно быть меню: <script language=Javascript type=text/javascript> var prefixCategory="cat"; var prefixImgCat="imgCat"; function ShowHideCategory(index) { var folderDIV=document.getElementById(prefixCategory+index); var imgObject=document.getElementById(prefixImgCat+index); if (folderDIV==null || imgObject==null) return false; if (imgObject.src.indexOf("down.jpg")==-1) { imgObject.src="/images/down.jpg"; folderDIV.style.display="block"; } else { imgObject.src="/images/up.jpg"; folderDIV.style.display="none"; } return true; } function goToCategory(route) { var listCategory=route.split(","); for (var i=0;i<listCategory.length;i++) ShowHideCategory(listCategory[i]); return true; } </SCRIPT> <DIV id=tmhelp_th_navigationLeftMenu>{menu}</DIV> <script language=javascript type=text/javascript>goToCategory("");</SCRIPT> </DIV> Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 Попробуйте так: это $fx3='<div style="display:inline;"><img id="imgCat'.$id.'" onclick="ShowHideCategory('.$id.')" alt="" src="{THEME}/images/down.jpg" /> '; замените на вот что $fx3='<div style="display:block;"><img id="imgCat'.$id.'" onclick="ShowHideCategory('.$id.')" alt="" src="{THEME}/images/down.jpg" align="left" /> '; Цитата Ссылка на сообщение Поделиться на других сайтах
gva 0 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 пойдет такой вариант меню??? Цитата Ссылка на сообщение Поделиться на других сайтах
B@RT 0 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 Автор я так понимаю, это использует активно базу? если да, то в топку.... Цитата Ссылка на сообщение Поделиться на других сайтах
gva 0 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 само дерево практически не использует. при желании можно еще и кэшировать его. по нагрузке можно сделать не тяжелее, чем модуль динамического меню, который уже есть под дле Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 12 июля 2007 Рассказать Опубликовано: 12 июля 2007 я так понимаю, это использует активно базу? если да, то в топку.... Молодой челоек использование базы ещё ни о чём не говорит абсолютно. Меню - понятие медленнодинамичное и ничего не мешает вам его обновлять раз в сутки или при изменениях, а в остальное время оно будет браться из HTML Gorets, отличное меню - респект! Цитата Ссылка на сообщение Поделиться на других сайтах
B@RT 0 Опубликовано: 13 июля 2007 Рассказать Опубликовано: 13 июля 2007 (изменено) Автор Gorets, А где можно скачать, попробывать этот модуль? lifestar, Спасибо, помогло.... только теперь картинка кнопки "свернуть/развернуть" рисуется поверх пункта меню (накладывается).... Изменено 13 июля 2007 пользователем B@RT Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 13 июля 2007 Рассказать Опубликовано: 13 июля 2007 B@RT, слушай покаж картинку то - так на словах плохо понятно. Цитата Ссылка на сообщение Поделиться на других сайтах
B@RT 0 Опубликовано: 13 июля 2007 Рассказать Опубликовано: 13 июля 2007 Автор Это, когда выше пунтка меню: А вот когда наложение: Цитата Ссылка на сообщение Поделиться на других сайтах
Aktarsis 0 Опубликовано: 18 июля 2007 Рассказать Опубликовано: 18 июля 2007 Хм,уважаемые,а что может не работать в коде,предложенным B@RT'ом вроде все сделал,но на сайте выводится только {menu} Цитата Ссылка на сообщение Поделиться на других сайтах
B@RT 0 Опубликовано: 19 июля 2007 Рассказать Опубликовано: 19 июля 2007 Автор Хм,уважаемые,а что может не работать в коде,предложенным B@RT'ом вроде все сделал,но на сайте выводится только {menu} ну, для начала ты должен проинициализоровать модуль, причем в нужно месте Цитата Ссылка на сообщение Поделиться на других сайтах
Grek 0 Опубликовано: 2 августа 2007 Рассказать Опубликовано: 2 августа 2007 Хм,уважаемые,а что может не работать в коде,предложенным B@RT'ом вроде все сделал,но на сайте выводится только {menu} ну, для начала ты должен проинициализоровать модуль, причем в нужно месте а где это сделать? напиши плиз полную инструкциюоч надо! Цитата Ссылка на сообщение Поделиться на других сайтах
МВИА 10 Опубликовано: 11 октября 2007 Рассказать Опубликовано: 11 октября 2007 Хм,уважаемые,а что может не работать в коде,предложенным B@RT'ом вроде все сделал,но на сайте выводится только {menu} ну, для начала ты должен проинициализоровать модуль, причем в нужно месте а где это сделать? напиши плиз полную инструкциюоч надо! Действительно как? Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.