Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
В Опенкарте 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 версії Опенкарту файли інші.
Дякую. Буду розбиратись.
Дуже шкода, але в мене не спрацював такий варіант. Можливо через те, що шаблон не дефолтний і дивлюсь файли трошки відрізняються.
1407 днів боротьби зміцнили нас. Бажаємо світла, перемоги та миру. Разом до мети!
Happy 2026 Year, Nulled Warez Scripts
1407 days of resilience. Wishing you peace, light, and victory in 2026. Stay strong!
С Новым 2026-м Годом, Nulled Warez Scripts
1407 дней борьбы за нами. Желаем мира, тепла и победы в новом году. Мы выстоим!
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.