Jump to content
SaulBerenson

Сделал вручную боковое меню, хочу в нём добавлять класс active к ссылке на текущий урл

Recommended Posts

Posted (edited)

В админке "Каталог" - "Статьи" создал ряд статей на тему "Как выбрать", "Гарантийное обслуживание" и т.д. Хочу, чтобы на шаблоне "Информация" сбоку выводилась менюшка из этих статей, в том же виде, в котором сбоку категории на страницах категорий и продуктов (class="list-group"). В опенкарте чайник, первый раз сайт делаю. Поскольку выводить в менюшку надо не все статьи - решил искать вариант не как вывести меню статей, а вручную прописать в catalog\view\theme\default\template\information\information.twig на html эту менюшку.

Прописал вот так

<aside id="column-left" class="col-sm-3 hidden-xs">
    <div class="list-group">


<a href="/how_to_choose/" class="list-group-item">Как выбрать</a> 
<a href="/garantiya/" class="list-group-item">Гарантийное обслуживание</a>
.. БЛА БЛА БЛА...
<a href="/contacts/" class="list-group-item">Контактная информация</a>
     
    </div>

  </aside>

Менюшка выглядит полностью как мне надо.

А теперь вот думаю - а как приписать класс active к ссылке на ту статью, которая сейчас на экране? чтобы было 

class="list-group-item active"

 

Такой вариант 

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

ничего не дал.

Напишите в личку кто может помочь и цена вопроса?

Edited by SaulBerenson

Share this post


Link to post
Share on other sites

надо в контроллере смотреть какая ссылка активна и не говнокодить в шаблоне 

<a href="/contacts/" class="list-group-item">Контактная информация</a>

Share this post


Link to post
Share on other sites
16 минут назад, spectre сказал:

надо в контроллере смотреть какая ссылка активна и не говнокодить в шаблоне 

Ну так помогите. Я же понимаю, что для знающего человека это 2 минуты и 3 строчки, готов перечислить благодарность за работающее решение. 

Share this post


Link to post
Share on other sites
5 минут назад, SaulBerenson сказал:

Ну так помогите. Я же понимаю, что для знающего человека это 2 минуты и 3 строчки, готов перечислить благодарность за работающее решение. 

Посмотрите как генерятся статьи в футере

id статьи это $this->request->get['information_id']

Share this post


Link to post
Share on other sites
12 часов назад, spectre сказал:

Посмотрите как генерятся статьи в футере

Смотрю и контроллер и сам шаблон, но мало что понимаю. И это не даёт мне никакого понимания о том, как класс active подставить к активной ссылке. Я не программист, даже в синтаксисе php плохо ориентируюсь, а twig вообще первый раз вижу

Share this post


Link to post
Share on other sites

в контроллере

// идентификаторы нужных статей
$conf_aticle = '4,3,5';
            
// массив для статей(для передачи в шаблон)
$data['aticles'] = array();

// идентификатор текущей статьи
$inf_id = $this->request->get['information_id'];

// получаем статьи
$aticles = $this->model_catalog_information->getInformationsInMenu($conf_aticle);

// формируем данные для шаблона
if($aticles){
    foreach($aticles as $aticle){
        // добавляем класс если это текущая статья
        $class = $aticle['information_id'] == $inf_id? 'active': '';
        $data['aticles'][] = array(
            'title' => $aticle['title'],
            'href'  => $this->url->link('information/information', 'information_id=' . $aticle['information_id']),
            'class' => $class
        );
    }
}

в модели

public function getInformationsInMenu($conf_info) {
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "information i LEFT JOIN " . DB_PREFIX . "information_description id ON (i.information_id = id.information_id) LEFT JOIN " . DB_PREFIX . "information_to_store i2s ON (i.information_id = i2s.information_id) WHERE id.language_id = '" . (int) $this->config->get('config_language_id') . "' AND i2s.store_id = '" . (int) $this->config->get('config_store_id') . "' AND i.status = '1' AND i.information_id IN(" . $conf_info . ") ORDER BY i.sort_order, LCASE(id.title) ASC");

    return $query->rows;
}

в шаблоне

{% if aticles %}
<div class="list-group">
    {% for aticle in aticles %}
    <a class="list-group-item {{ aticle.class }}" href="{{ aticle.href }}">{{ aticle.title }}</a>
    {% endfor %}
</div>
{% endif %}

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.