Как добавить активный класс, если текущий URL соответствует заданному (twig)

#twig #opencart #opencart-3

#twig #opencart #opencart-3

Вопрос:

Я хочу вручную написать боковое меню для магазина на opencart, и у меня проблема — как заставить twig добавить класс «active» к ссылке для текущей страницы

Я пытался сделать это так

 <a href="/something/" class="list-group-item {{ (app.request.attributes.get('_route') == 'something') ? 'active' }}">page about something</a>
  

но это не работает

Комментарии:

1. Вы проверили, что app.request.attributes.get('_route') возвращает?

Ответ №1:

Это именно то, что делает модуль category, чтобы вы могли скопировать его:

 {% if child.category_id == child_id %}
    <a href="{{ child.href }}" class="list-group-item active">amp;nbsp;amp;nbsp;amp;nbsp;- {{ child.name }}</a> 
{% else %} 
    <a href="{{ child.href }}" class="list-group-item">amp;nbsp;amp;nbsp;amp;nbsp;- {{ child.name }}</a>
{% endif %}
  

Вы можете найти файл выше здесь:

 /catalog/view/theme/default/template/extension/module/category.twig
  

Вы можете найти его контроллер здесь:

 /catalog/controller/extension/module/category.php
  

Комментарии:

1. это не для страниц категории или продукта, я хочу левое боковое меню для информационных страниц, но включающее только выбранные страницы, а не все

2. Я знаю. Приведенный выше пример кода предназначен для модуля категории , а не для страницы категории . Модуль может быть размещен на любой странице, как описано здесь: antropy.co.uk/blog/how-do-opencart-layouts-work

Ответ №2:

Я бы сделал это так, чтобы отправить запрос маршрута в файл телефона контроллера. Это было бы что-то вроде приведенного ниже:

 $urlroute = $this->request->get['route'];
  

Затем в файле twig вы можете просто проверить переменную маршрута в запросе IF

 {% if urlroute ==  "something" % }
    <a href="/something/" class="list-group-item active">page about something</a>
{% else %} 
    <a href="/something/" class="list-group-item">page about something</a>
{% endif %}
  

Комментарии:

1. Это точно такой же код, который OP используется, но растянут. Не понимаю, как это решило бы проблему

2. При этом используется код, соответствующий тому, как закодирован opencart. Вы вообще что-нибудь знаете об opencart?