SmartyDev Опубликовано 1 октября, 2015 Жалоба Поделиться Опубликовано 1 октября, 2015 Здравствуйте. Верстаю новый шаблон в котором делаю 3-ёх уровневое выпадающее меню. Все-бы хорошо но не могу разобраться с {if $category->id == $c->id}selected{/if} Код меню у меня вот такой (само меню выводится через include) {if $categories} {if $level == 0} {foreach item=c from=$categories} {if $c->visible} {if $c->subcategories} <div class="licat {if $category->id == $c->id}selected{/if}"> <a href="catalog/{$c->url}" class="licat"><span>{$c->name}</span></a> {include file='categories.tpl' categories=$c->subcategories level=1} </div> {else} <div class="licat {if $category->id == $c->id}selected{/if}"> <a href="catalog/{$c->url}" class="licat">{$c->name}</a> </div> {/if} {/if} {/foreach} {/if} {if $level == 1} <div class="ulsubpad"> <div class="ulsub"> {foreach item=c from=$categories} {if $c->subcategories} <div class="lisub"> <a href="catalog/{$c->url}" class="asub {if $category->id == $c->id}selected{/if}">{$c->name}</a> <span class="podcat"></span> {include file='categories.tpl' categories=$c->subcategories level=2} </div> {else} <div class="lisub"> <a href="catalog/{$c->url}" class="asub {if $category->id == $c->id}selected{/if}">{$c->name}</a> </div> {/if} {/foreach} </div> </div> {/if} Это часть кода, но суть вопроса будет видна. Как можно увидеть, в каждой главной ссылке есть class="licat {if $category->id == $c->id}selected{/if}" Проблема: Когда выбираешь категорию 2-ого и ниже уровня - родительская категория(и) перестает иметь класс selected т.к. $c->id уже другой. Вопрос: Как можно решить этот вопрос и сохранять класс selected для родительских категорий?Буду очень благодарен за помощь. Цитата Ссылка на сообщение Поделиться на другие сайты
Решение mishanya Опубликовано 1 октября, 2015 Решение Жалоба Поделиться Опубликовано 1 октября, 2015 Узнаем родительскую категорию {$first_category = $category->path|first} добавляем класс если родительская категория совпадает из какой-то в цикле class="licat {if $first_category->id == $c->id}selected{/if}" Цитата Ссылка на сообщение Поделиться на другие сайты
SmartyDev Опубликовано 1 октября, 2015 Автор Жалоба Поделиться Опубликовано 1 октября, 2015 Спасибо большой, какой раз вы уже мне помогаете! {$first_category = $category->path|first}{$last_category = $category->path[($category->path)|count-2]} Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 1 октября, 2015 Жалоба Поделиться Опубликовано 1 октября, 2015 {if in_array($category->id, $c->children)}...{/if} Делает активной текущую и всех ее родителей Цитата Ссылка на сообщение Поделиться на другие сайты
Suprun4uk Опубликовано 9 марта, 2016 Жалоба Поделиться Опубликовано 9 марта, 2016 Узнаем родительскую категорию {$first_category = $category->path|first} добавляем класс если родительская категория совпадает из какой-то в цикле class="licat {if $first_category->id == $c->id}selected{/if}" Спасибо ! Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.