Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   ребят помогите с меню (https://javascript.ru/forum/jquery/77337-rebyat-pomogite-s-menyu.html)

SERblY 20.04.2019 21:25

ребят помогите с меню
 
Помогите плз с меню, пытался через условие смарти сделать чето не получается, вот мб есть нормальный вариант на 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%}" и т.д.

laimas 21.04.2019 01:07

И в чем проблема сравнить caturl с category.uri в нужном месте и по условию сравнения прописать или нет класс?

SERblY 21.04.2019 10:07

внимательнее прочитал бы, если бы не было проблем наверное не писал бы сюда, как считаешь ?

SERblY 21.04.2019 10:12

сравнить то сравнить, как привязать к конкретному пункту из массива всего, теоритический понимаю, но рабочий код не смогу написать, всю голову сломал уже

laimas 21.04.2019 10:25

Цитата:

Сообщение от SERblY
как привязать к конкретному пункту из массива всего

Что это означает?

Если открыта /avto/, и avto и т.п., это уникальные значения (как и другие значения у элементов), и эти значения, это category.uri и smarty.get.cat.0, то как может быть при сравнении множество совпадений?

SERblY 21.04.2019 10:35

я в jqury не силен, поэтому и прошу помощи в данном вопросе!
чисто на смарти как я понял этого не написать...

laimas 21.04.2019 10:48

Цитата:

Сообщение от SERblY
я в jqury не силен,

Вы можете в конце концов пояснить, что есть такое avto и подобное или нет? Если у вас avto не уникальные значения, то хоть на чем вы не сможете ничего сделать, если не задать условий.

Если в url значение avto и подобные, это уникальные категории, то есть не могут быть у множества элементов LI, то сравнивая category.uri (если эта переменная и есть категория) с параметром GET запроса, можно определить добавление класса. Получить значение GET параметра в Smarty, это $smarty.get.имя_параметра. Но судя по всему, у вас ЧПУ, а значит в шаблон нужно будет передавать результат обработки url в .htaccess.

Хватит в ступе толочь и поясните, что вот это то, а это другое и т.п.

SERblY 21.04.2019 10:58

Цитата:

Сообщение от laimas (Сообщение 506770)
Вы можете в конце концов пояснить, что есть такое avto и подобное или нет? Если у вас avto не уникальные значения, то хоть на чем вы не сможете ничего сделать, если не задать условий.

Если в 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 21.04.2019 11:06

да и маленькое дополнение, не знаю правильно выражусь или нет, но смысл то присвоение класса должно как то связано быть с айди, чтобы конкретному пункту списка из всего массива присваивался класс а не всему списку!

laimas 21.04.2019 11:06

SERblY, id тут боком.

Вы не показываете html кода меню и бог его знает, что оно из себя представляет. Допустим, что это одноуровневое меню, и значения Avto (с чего оно вдруг с заглавное стало не понятно) и другие, это есть уникальные значения. То есть Avto и другие значения могут быть только у одного элемента меню и в цикле никак не могут повторятся. Остается проверить GET параметр запроса и выводимое в меню в цикле и получим ответ.

Но чем определяется Avto и другое, какой переменной так и остается загадкой. А также не известно передается ли GET запрос в шаблон и как, или нет.

Это вы можете пояснить или нет? А может быть речь идет о группе элементов с таким параметром и надо раскрыть родителя? Вы понимаете о чем вас спрашивают?


Часовой пояс GMT +3, время: 08:45.