Как выводить DIV блок только на главной странице в Opencart 3

Тема в разделе "Дизайн, оформление и шаблоны", создана пользователем Andruxakonst, 16 окт 2018.

  1. Andruxakonst

    Andruxakonst Новичок

    Сообщения:
    2
    Симпатии:
    0
    Имеется div блок который прописан в header.twig собственноручно.
    Необходимо его скрывать на всех страницах отличных от главной.
    пробовал так:
    <?php if ($class = 'common-home') { ?>
    div блок.......
    <?php } ?>

    но при выводе страницы любой код php просто комментируется.
    С twig ранее не сталкивался вообще.
     
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    3.876
    Симпатии:
    1.064
    Вот код из контроллера header.php в старой версии
    PHP:
            // For page specific css
            
    if (isset($this->request->get['route'])) {
                if (isset(
    $this->request->get['product_id'])) {
                    
    $class '-' $this->request->get['product_id'];
                } elseif (isset(
    $this->request->get['path'])) {
                    
    $class '-' $this->request->get['path'];
                } elseif (isset(
    $this->request->get['manufacturer_id'])) {
                    
    $class '-' $this->request->get['manufacturer_id'];
                } else {
                    
    $class '';
                }

                
    $data['class'] = str_replace('/''-'$this->request->get['route']) . $class;
            } else {
                
    $data['class'] = 'common-home';
            }

    Используйте его. В шаблоне получите переменную class которую можно использовать в условии типа
    HTML:
    {% if class == 'common-home' %}
    тут что то
    {% endif %}
    Лишнее можно вырезать конечно из представленного примера, но поизучайте.
     
    Andruxakonst нравится это.
  3. Andruxakonst

    Andruxakonst Новичок

    Сообщения:
    2
    Симпатии:
    0
    Спасибо! Теперь все относительно понятно.
    Получилось так:
    В header.php добавил
    PHP:
    $main_str 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
            if (
    $main_str =='http://mebel-titul.ru/') {
                
    $data['class'] = 'class_home';
            } else {
                
    $data['class'] = 'class_not_home';
            }
    И в шаблоне прописал
    PHP:
    {% if class == 'class_home' %}
    Нужный див блок
    {% endif %}
    Как я понял, $data это массив, который в конце файла передается через return. Ну а в шаблоне, который уже получил массив, при помощи [ключа] получаем значение ['class'] после чего сравниваем его. Если равен "==" - вывели блок, иначе не вывели.
     
    Последнее редактирование: 17 окт 2018
  4. Расул

    Расул Новичок

    Сообщения:
    2
    Симпатии:
    1
    Может кому пригодится ещё, а то я искал норм способ рабочий, но так и не нашёл)

    этот js скрипт подключите на страницу или в файл js необходимый

    HTML:
    if (['/', '/index.php?route=common/home'].includes(document.location.href.split('//').pop().replace(document.location.host, '')))  {
            $('.mobile-categories').css('display', 'block');
     }
    .mobile-categories - это класс блока, который хотите отобразить на главной странице, изначально его скройте в стилях

    .mobile-categories {
    display: none;
    }
     
    Ravilr нравится это.
  5. Ravilr

    Ravilr Специалист

    Сообщения:
    3.876
    Симпатии:
    1.064
    Спасибо за решение, но выше все же более правильный способ.
     
  6. Расул

    Расул Новичок

    Сообщения:
    2
    Симпатии:
    1
    Соглашусь, он более правильный, но у меня не получилось его реализовать, потому так пришлось сделать)