ребят помогите с меню
Помогите плз с меню, пытался через условие смарти сделать чето не получается, вот мб есть нормальный вариант на jquery ?
Есть меню типа: {%foreach from=$categories item='category'%} {%if $category.parent == 0%} {%assign var="count" value=$category.id|count_msg%} {%assign var="caturl" value=$smarty.get.cat.0%} <li class="resp-tab-item hor_1"><a class="nav1" href="{%$settings.path%}{%$category.uri%}/"> {%$category.name%}</a></li> {%/if%} {%/foreach%} вкратце выводит список категорий, как сделать чтобы если находясь в категории Авто например <li> добавлялся бы класс tab-active тоесть бышло бы так <li class="resp-tab-item hor_1 tab-active"><a class="nav1" href="{%$settings.path%}{%$category.uri%}/"> {%$category.name%}</a></li> Но это пол беды блин как сделать чтобы именно конкретному пункту из выборки присваивался класс, а не всем подряд! Если перевести на Русский (например пользователь находится на страничке http://site.ru/avto/): {%foreach from=$categories item='category'%} {%if $category.parent == 0%} {%assign var="count" value=$category.id|count_msg%} {%assign var="caturl" value=$smarty.get.cat.0%} <li class="resp-tab-item hor_1 (Если открыта /avto/, то подсвечивается то добавляется класс сюда)"><a class="nav1" href="{%$settings.path%}{%$category.uri%}/"> {%$category.name%}</a></li> {%/if%} {%/foreach%} объявил переменную {%assign var="caturl" value=$smarty.get.cat.0%} она будет выводить uri категории вида: Avto, Biznes, Nedvighimost и т.д. можно использовать как то в решении данной задачи хз мб для id или еще чего, в шаблоне выводится так {%$caturl%}, можно использовать например так: <li id="{%$caturl%}" и т.д. |
И в чем проблема сравнить caturl с category.uri в нужном месте и по условию сравнения прописать или нет класс?
|
внимательнее прочитал бы, если бы не было проблем наверное не писал бы сюда, как считаешь ?
|
сравнить то сравнить, как привязать к конкретному пункту из массива всего, теоритический понимаю, но рабочий код не смогу написать, всю голову сломал уже
|
Цитата:
Если открыта /avto/, и avto и т.п., это уникальные значения (как и другие значения у элементов), и эти значения, это category.uri и smarty.get.cat.0, то как может быть при сравнении множество совпадений? |
я в jqury не силен, поэтому и прошу помощи в данном вопросе!
чисто на смарти как я понял этого не написать... |
Цитата:
Если в url значение avto и подобные, это уникальные категории, то есть не могут быть у множества элементов LI, то сравнивая category.uri (если эта переменная и есть категория) с параметром GET запроса, можно определить добавление класса. Получить значение GET параметра в Smarty, это $smarty.get.имя_параметра. Но судя по всему, у вас ЧПУ, а значит в шаблон нужно будет передавать результат обработки url в .htaccess. Хватит в ступе толочь и поясните, что вот это то, а это другое и т.п. |
Цитата:
{%assign var="caturl" value=$smarty.get.cat.0%} <li id="{%$caturl%}" class="resp-tab-item hor_1"><a class="nav1" href="{%$settings.path%}{%$category.uri%}/">{%$category.name%}</a></li> выводится (в итоговом HTML) массив рубрик по типу: <li id="Avto" class="resp-tab-item hor_1"><a class="nav1" href="Avto/">Авто</a></li> НЕдвижимость Работа и .т. Как написать рабочий код что-бы: Если юзер находится на Avto/ сравнивалось url где он находится с id , если совпадает то <li> добавляется class tab-active тоесть было бы в итоге так: {%assign var="caturl" value=$smarty.get.cat.0%} <li id="{%$caturl%}" class="resp-tab-item hor_1 tab-active"><a class="nav1" href="{%$settings.path%}{%$category.uri%}/">{%$category.name%}</a></li> |
да и маленькое дополнение, не знаю правильно выражусь или нет, но смысл то присвоение класса должно как то связано быть с айди, чтобы конкретному пункту списка из всего массива присваивался класс а не всему списку!
|
SERblY, id тут боком.
Вы не показываете html кода меню и бог его знает, что оно из себя представляет. Допустим, что это одноуровневое меню, и значения Avto (с чего оно вдруг с заглавное стало не понятно) и другие, это есть уникальные значения. То есть Avto и другие значения могут быть только у одного элемента меню и в цикле никак не могут повторятся. Остается проверить GET параметр запроса и выводимое в меню в цикле и получим ответ. Но чем определяется Avto и другое, какой переменной так и остается загадкой. А также не известно передается ли GET запрос в шаблон и как, или нет. Это вы можете пояснить или нет? А может быть речь идет о группе элементов с таким параметром и надо раскрыть родителя? Вы понимаете о чем вас спрашивают? |
куда подробнее я хз уже описать, не надо меня носом тыкать, если я не понимаю как написать, так я и прямо написал что не понимаю и прошу помочь, то что я понимаю я описал уже, если есть желание помочь, то помогите, если нету, то че тогда тут дискутировать, я обратился с реальной задачей с реальной просьбой!
ЗЫ выше есть код меню целиком <ul class="resp-tabs-list hor_1" style="width: 100%; margin: 0px; display: inherit !important; padding: 20px 0 !important;"> {%foreach from=$categories item='category'%} {%if $category.parent == 0%} {%assign var="count" value=$category.id|count_msg%} {%assign var="caturl" value=$smarty.get.cat.0%} <li class="resp-tab-item hor_1"><a class="nav1" href="{%$settings.path%}{%$category.uri%}"> {%$category.name%}</a></li> {%/if%} {%/foreach%} {%if $smarty.get.cat.0 eq '$caturl' %}123{%/if%} {%if $smarty.get.cat.0 eq '$caturl' %}{%$settings.path%}{%$category.uri%}{%/if%}{%if $category.uri == $checkurl%}resp-tab-active{%/if%} </ul> |
Цитата:
А если кроме гонора ответов не будет, то да, разбирайтесь сами. |
код работает, я попросил помощи в его дополнении, присвоить класс с помощью jquery? все подробно описано выше!!!
|
Цитата:
|
у меня притензий нет и не может быть, это вы тут что то помоему грубовато общайтесь, не можете по делу нечего написать, не пишите, я просто не знаю jquery, сам бы сделал естественнООООО!!!:victory:
Информации более чем достаточно я выложил! |
Это какой-то пипец.
|
я просто шаблон еще верстаю, и вся загвостка в присвоении элементу списка класса активного, я весь код выложил я хз что еще показать вам..., я просто хз как на jquery это написать...
|
в HTML после обработки смарти меню выводится так, если вы об этом ?!!
<ul class="resp-tabs-list hor_1" style="width: 100%; margin: 0px; display: inherit !important; padding: 20px 0 !important;"> <li id="Avtotransport" class="resp-tab-item hor_1"><a class="nav1" href="/Avtotransport">Автотранспорт</a></li> <li id="Biznes" class="resp-tab-item hor_1"><a class="nav1" href="/Biznes">Бизнес</a></li> <li id="Zhivotnye-i-rasteniya" class="resp-tab-item hor_1"><a class="nav1" href="/Zhivotnye-i-rasteniya"> Животные и растения</a></li> <li id="Znakomstva" class="resp-tab-item hor_1"><a class="nav1" href="/Znakomstva">Знакомства</a></li> <li id="Mebel-interer-obihod" class="resp-tab-item hor_1"><a class="nav1" href="/Mebel-interer-obihod"> Мебель, интерьер, обиход</a></li> <li id="Mobilnye-telefony" class="resp-tab-item hor_1"><a class="nav1" href="/Mobilnye-telefony">Мобильные телефоны</a></li> <li id="Muzyka-iskusstvo-kollekcii" class="resp-tab-item hor_1"><a class="nav1" href="/Muzyka-iskusstvo-kollekcii">Музыка, искусство, коллекции</a></li> <li id="Nedvizhimost" class="resp-tab-item hor_1"><a class="nav1" href="/Nedvizhimost">Недвижимость</a></li> <li id="Oborudovanie" class="resp-tab-item hor_1"><a class="nav1" href="/Oborudovanie">Оборудование</a></li> <li id="Odezhda-obuv-aksessuary" class="resp-tab-item hor_1"><a class="nav1" href="/Odezhda-obuv-aksessuary">Одежда, обувь, аксессуары</a></li> <li id="Orgtehnika" class="resp-tab-item hor_1"><a class="nav1" href="/Orgtehnika">Оргтехника</a></li> <li id="Rabota-i-obrazovanie" class="resp-tab-item hor_1"><a class="nav1" href="/Rabota-i-obrazovanie">Работа и образование</a></li> <li id="Stroi-materialy" class="resp-tab-item hor_1"><a class="nav1" href="/Stroi-materialy">Строй материалы</a></li> <li id="Tovary" class="resp-tab-item hor_1"><a class="nav1" href="/Tovary"> Товары</a></li> <li id="Uslugi" class="resp-tab-item hor_1"><a class="nav1" href="/Uslugi"> Услуги</a></li> <li id="Elektronika-i-bytovaya-tehnika" class="resp-tab-item hor_1"><a class="nav1" href="/Elektronika-i-bytovaya-tehnika">Электроника и бытовая техника</a></li> <li id="Drugoe" class="resp-tab-item hor_1"><a class="nav1" href="/Drugoe">Другое</a></li> </ul> до обработки (внутренний html): <ul class="resp-tabs-list hor_1" style="width: 100%; margin: 0px; display: inherit !important; padding: 20px 0 !important;"> {%foreach from=$categories item='category'%} {%if $category.parent == 0%} {%assign var="count" value=$category.id|count_msg%} {%assign var="caturl" value=$category.uri%} <li id="{%$caturl%}" class="resp-tab-item hor_1"><a class="nav1" href="{%$settings.path%}{%$category.uri%}"> {%$category.name%}</a></li> {%/if%} {%/foreach%} </ul> |
Вы понимаете, что такое параметр запроса?
То есть на сервере это $_GET массив. Я понятия не имею как этот запрос у вас обрабатывается, но уже сотый раз повторяю - если передать в шаблон полученное из запроса, пусть это к примеру будет "Uslugi" под переменной $cat, то сравнивая ее значение со значением $category.uri, можно вывести и дополнительное имя класса. И нафиг не нужны ни id, ни JQ. Что в этом не понятно и какие тут могут быть проблемы? А уж если не понятно о чем речь, и на клиента взгромоздить, то достаточно сравнить атрибут href ссылок меню с текущим Url страницы, и тоже никаких id в общем то и не нужно. |
я понимаю что для Вас все просто, я не утверждаю что нужны айди, я просто обратился за решением как это написать на jquery или еще как-то, рабочий вариант, просто моих знаний нехватает решить данный вопрос, я просто описал как я это понимаю и выложил код, приветствую любые предложения и решения...
Спасибо! |
$(function() { //добавлен id элементу ul меню - menu. $('#menu').find('a').filter(function() { return location.href == this.href }).parent().addClass('tab-active'); }); это с учетом того, что в url нет слеша в конце. Но и в этом случае не будет проблем сделать, способов выделить/найти и т.п. много. Вот только зачем вся эта морока, если на сервере уже готовые строки в массиве есть, нужно только сравнить, не понятно. |
Спасибо добрый человек! ,а вот со слешем не подскажите как сделать ? мб можно и просто сравнить как вы пишите я хз. я по просту незнаю как, все до чего додумался перебрал...
|
this.href, то есть значение атрибута текущей ссылки вернет не то, что в нем прописано, а протокол, имя домена плюс то что прописано. Но не будет закрывающего слеша (вы же его не прописываете в коде), который может подставлять сервер, к примеру. Я уже говорил, что мне не известно как все на сервере обрабатывается, а гадать я не буду.
Если же значение атрибута получать средствами jQuery - .attr('href'), то будет возвращено только то, что в нем прописано. Это можно использовать как поиск в url для сравнения. А вообще, не зная JS, но имея понятие о сервере, нужно делать это на нем, для него это плевая забава. |
Цитата:
|
Цитата:
|
Я просил пояснить что в каких переменных передается в шаблон, чтобы понять причину, но так и не дождался, поэтому без комментария.
Чтобы не иметь проблем со слешем прописывайте их в коде явно, это ведь не сложно. |
как тяжело это ппц(((( просто, ладно Спасибо! на других сайтах поищу, жесть весь день.... три строчки кода написать....
|
Часовой пояс GMT +3, время: 01:20. |