Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
В Опенкарте 3 сделал подсветку активного пункта меню таким образом.
То есть при выборе пункта меню ему назначается класс "active". Работает если выбирать только главные пункты меню.
Если выбрать подпункт меню (подкатегорию), в таком случае скрипт перестает назначать дополнительный класс.
Прошу помощи как сделать.
доброго часу, я б все ж таки робив на бекенді таке рішення, ніж фронтенд чіпляв, хоча можна і приміркувати щось з jQuery, та все ж, в контроллері (catalog\controller\common\menu.php), я б до обидвох массивів (батьківські та дочірні категорії), додав ідентифікатор category_id, а у верхньому секторі, робив би перевірку на кінцевий "path", що дасть змогу проставляти активність не тільки на обране меню, але й на усі рівні ієрархії, додавши ось такий код:
PHP:
// init array of all category ids
$data['parts'] = array();
if (isset($this->request->get['path'])) {
$data['parts'] = explode('_', (string)$this->request->get['path']);
}
тобто загальний контроллер меню матиме ось такий вид
а уже в в'юшці (twig файлі), додати ось таке правило перевірки: {% if category.category_id in parts %}active{% endif %}
тобто увесь twig матиме ось такий вигляд:
HTML:
{% if categories %}
<div class="container">
<nav id="menu" class="navbar">
<div class="navbar-header"><span id="category" class="visible-xs">{{ text_category }}</span>
<button type="button" class="btn btn-navbar navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"><i class="fa fa-bars"></i></button>
</div>
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
{% for category in categories %}
{% if category.children %}
<li class="dropdown"><a href="{{ category.href }}" class="dropdown-toggle {% if category.category_id in parts %}active{% endif %}" data-toggle="dropdown">{{ category.name }}</a>
<div class="dropdown-menu">
<div class="dropdown-inner"> {% for children in category.children|batch(category.children|length / category.column|round(1, 'ceil')) %}
<ul class="list-unstyled">
{% for child in children %}
<li><a href="{{ child.href }}" class="{% if child.category_id in parts %}active{% endif %}">{{ child.name }}</a></li>
{% endfor %}
</ul>
{% endfor %}</div>
<a href="{{ category.href }}" class="see-all">{{ text_all }} {{ category.name }}</a> </div>
</li>
{% else %}
<li><a href="{{ category.href }}">{{ category.name }}</a></li>
{% endif %}
{% endfor %}
</ul>
</div>
</nav>
</div>
{% endif %}
доброго часу, я б все ж таки робив на бекенді таке рішення, ніш фронтенд чіпляв, хоча можна і приміркувати щось з jQuery, та все ж, в контроллері (catalog\controller\common\menu.php), я б до обидвох массивів (батьківські та дочірні категорії), додав ідентифікатор category_id, а у верхньому секторі, робив би перевірку на кінцевий "path", що дасть змогу проставляти активність не тільки на обране меню, але й на усі рівні ієрархіє, додавши ось такий код:
PHP:
// init array of all category ids
$data['parts'] = array();
if (isset($this->request->get['path'])) {
$data['parts'] = explode('_', (string)$this->request->get['path']);
}
тобто загальний контроллем меню матиме ось такий вид
а уже в в'юшці (twig файлі), додати ось таке правило перевірки: {% if category.category_id in parts %}active{% endif %}
тобто увесь twig матиме ось такий вигляд:
HTML:
{% if categories %}
<div class="container">
<nav id="menu" class="navbar">
<div class="navbar-header"><span id="category" class="visible-xs">{{ text_category }}</span>
<button type="button" class="btn btn-navbar navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"><i class="fa fa-bars"></i></button>
</div>
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
{% for category in categories %}
{% if category.children %}
<li class="dropdown"><a href="{{ category.href }}" class="dropdown-toggle {% if category.category_id in parts %}active{% endif %}" data-toggle="dropdown">{{ category.name }}</a>
<div class="dropdown-menu">
<div class="dropdown-inner"> {% for children in category.children|batch(category.children|length / category.column|round(1, 'ceil')) %}
<ul class="list-unstyled">
{% for child in children %}
<li><a href="{{ child.href }}" class="{% if child.category_id in parts %}active{% endif %}">{{ child.name }}</a></li>
{% endfor %}
</ul>
{% endfor %}</div>
<a href="{{ category.href }}" class="see-all">{{ text_all }} {{ category.name }}</a> </div>
</li>
{% else %}
<li><a href="{{ category.href }}">{{ category.name }}</a></li>
{% endif %}
{% endfor %}
</ul>
</div>
</nav>
</div>
{% endif %}
Та я зробив, шо зміг знайти в гуглі. Бо багато рішень для 2 версії. А в 3 версії Опенкарту файли інші.
Дякую. Буду розбиратись.
Дуже шкода, але в мене не спрацював такий варіант. Можливо через те, що шаблон не дефолтний і дивлюсь файли трошки відрізняються.
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.