Горизонтальное меню из статей в CMS Opencart

Здравствуйте читатели моего блога. Мы продолжаем рассматривать полезные фичи для создания интернет магазина на Opencart.

Кто уже работал с данной CMS, видели, что горизонтальное меню по умолчанию формируется из созданных категорий. Часто это не слишком удобно, и разработчикам нужно подключить вывод, например, статей, зачастую это пункты меню: Доставка, Оплата и прочие.  По умолчанию, если при создании статьи поставить галочку «Bottom». То они будут отображаться в нижней части сайта – в футере.

Давайте осуществим несложные операции и выполним поставленную перед нами задачу.

1.) Для начала будем править файл контроллера, он находится в — /catalog/controller/common/header.php.

Ищем часть кода:

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/header.tpl')) {
            $this->template = $this->config->get('config_template') . '/template/common/header.tpl';
        } else {
            $this->template = 'default/template/common/header.tpl';
        }
 
        $this->render();

И перед ним вставляем следующий код:

$this->load->model('catalog/information');
 
        $this->data['informations'] = array();
 
        foreach ($this->model_catalog_information->getInformations() as $result) {
            $this->data['informations'][] = array(
                'title' => $result['title'],
                'href'  => $this->url->link('information/information', 'information_id=' . $result['information_id'])
            );
        }

После чего нам нужно подправить файл шаблона, в котором указан вывод меню. Для этого открываем файл — /catalog/view/theme/ваша тема/template/common/header.tpl  и вместо кода:

<?php if ($categories) { ?>
<div id="menu">
  <ul>
    <?php foreach ($categories as $category) { ?>
    <li><?php if ($category['active']) { ?>
    <a href="<?php echo $category['href']; ?>" class="active"><?php echo $category['name']; ?></a>
    <?php } else { ?>
    <a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
    <?php } ?>
 
      <?php if ($category['children']) { ?>
      <div>
        <?php for ($i = 0; $i < count($category['children']);) { ?>
        <ul>
          <?php $j = $i + ceil(count($category['children']) / $category['column']); ?>
          <?php for (; $i < $j; $i++) { ?>
          <?php if (isset($category['children'][$i])) { ?>
          <li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li>
          <?php } ?>
          <?php } ?>
        </ul>
        <?php } ?>
      </div>
      <?php } ?>
    </li>
    <?php } ?>
  </ul>
</div>
<?php } ?>

Вставляем новый код:

<div id="menu">
    <ul>
      <?php foreach ($informations as $information) { ?>
      <li><a href="<?php echo $information['href']; ?>"><?php echo $information['title']; ?></a></li>
      <?php } ?>
    </ul>
</div>

Вот и все, теперь у вас вместо категорий будут выводиться нужные Вам статьи. Они также будут 100% поддерживать мультиязычность, о которой мы говорили вот здесь.

В ближайшее время я начну рассматривать настройку интересных платных компонентов для Opencart, чтобы вы могли оценить всю мощь функционала, и определится, нужно ли вам покупать тот или другой модуль или нет. Чтобы ничего не пропустить подписывайтесь на мой блог в форме, которая расположена в сайдбаре.

Поделиться в социальных сетях:
32 комментариев к данной статье
Elchin

Здравствуйте спасибо большое за интересные статьи, но вот по этой статье у меня к вам вопрос, как можно сделать так что бы не все стать выводились которые есть в административной части, а лишь те которые я хочу, просто если ставить -1 в настройках статьи, они все равно выводятся в шапку сайта. Заранее благодарю.

Сергей Нечипорук

Добрый день. Вы можете попробовать во кладке Данные, в статье снять галочку «Выводить в футере». Если это не поможет, то можно создать статический вариант меню на основе html кода, в который вы сможете вставлять ссылки как на статьи так и на категории и другие разделы вашего магазина. Если интересна эта тема могу написать про это отдельную статью.

Elchin

Спасибо за ответ, насчет статьи, в принципе у меня все так и организована, но я думаю если вы напишите как это делается то многие новички будут рады.

Николай

Здравствуйте! Может не в той теме задам вопрос, но все же! Я случайно удалил статью «О Компании» в шапке магазина! Удалил из админки! И теперь при открывании данной статьи появляется надпись «Информационная страница не найдена!». Подскажите как можно ее восстановить!??

Сергей Нечипорук

Николай, нет восстановить не получиться. Создайте страницу с таким же урлом, содержимое придется вбивать заново.

Александр

Сергей Нечипорук Автор записи
22 Июнь 2014 в 11:21

Добрый день. Вы можете попробовать во кладке Данные, в статье снять галочку «Выводить в футере». Если это не поможет, то можно создать статический вариант меню на основе html кода, в который вы сможете вставлять ссылки как на статьи так и на категории и другие разделы вашего магазина. Если интересна эта тема могу написать про это отдельную статью.

Я рад был бы почитать подобную статью.

Николай

Да, статью бы посмотрел!

Сергей

Добрый день! Почему то пропадает активные стили меню((( Как решить эту проблему?

Сергей

Здравствуйте, подскажите пожалуйста: в header.tpl кодировка отличается от указанной Вами и после ее удаления и замены на указанный код ломается тема и белый экран, что делать?

Сергей Нечипорук

Сергей, никакую кодировку в этом случая я не меняю. Все делаю в исходном файле header.tpl.

Анатолий

Подскажите пожалуйста сменил SEO URL, а в футере информация открываеться а в верхнем меню при открытии пишет Запрашиваемая страница не найдена! как исправить ошибку? заранее спасибо!

Дмитрий

Здравствуйте, а как сделать так чтобы статья выводилась в подкатегориях? которая нужна мне, чтобы у статьи родительская категория была

Сергей Нечипорук

Дмитрий, в опенкарт нету возможности создавать категории из статей. Для этого нужно покупать специальный модуль.

Сергей Нечипорук

Анатолий, если Вы отключили SEO URL, то и формат ссылок нужно менять по умолчанию, такой как идет в движке после установки. Если же вы просто поменяли ссылку, то ее нужно подправить в файле header.tpl Вашей темы.

Ирина

Здравствуйте! Статья интересная, доходчиво и просто, спасибо! У меня проблема в обратном порядке, не могу убрать из горизонтального меню ,»маркетинг»»сотрудничество» «о нас». Все это в «Статьях» как и другое, но почему то и в меню отражается . Как убрать это из меню не пойму весь нет перерыла. У меня блок информация в нем все статьи и в меню повторятся не к чему. Можете помочь разобраться и исправить эту ситуацию? Спасибо!

Сергей Нечипорук

Ирина, наверняка у Вас установлен модуль меню в котором и добавлены все информационные страницы.

Илья

Полезная статья, спасибо!

Наталья

Здравствуйте! Подскажите пожалуйста, как вывести статьи не вместо категорий, а в вместе с (Главная / Закладки / (0) Корзина покупок / Оформление заказа) В идеале, конечно, чтобы выводились те статьи, в которых наоборот — стоит галочка показывать в футере.

игорь

Спасибо за статью, очень помогло. Только вот есть один вопрос. Как сделать пункты меню активными? Тоесть когла находишся на определенной странице статьи, в меню нужно ее выделить.

Сергей Нечипорук

Игорь, у меня на блоге есть решение этой задачи — http://webprovincia.com/opencart/vydelyaem-aktivnyj-punktmenu-opencart.html

Денис

На первом же этапе, при правке контроллера, слетает кодировка на сайте( Весь текст превращается в кракозябру. Пробовал сохранять в utf-8 — не помогает. В какой кодировке изначально header.php?

Сергей Нечипорук

Денис, попробуйте использовать редактор Notepad++, проблем возникнуть не должно.

Виктор

У меня задача-сделать дополнительное горизонтальное меню из категорий блога. Не посоветуете как это сделать?
Меня интересует сама функция вывода (всех категорий блога с подкатегориями)

ольга

спасибо за статью! помогло

Екатерина

Здравствуйте, подскажите плиз, как сделать частичный выод статей в горизонтальном меню не через html ? Возможно ли ?

Сергей Нечипорук

Екатерина, да это возможно но для этого Вам нужно воспользоваться специальными модулями для создания меню. Их Вы можете найти на официальном сайте модулей для опенкарта.

Сергей Нечипорук

Виктор, Вам нужно подобрать модуль для создания мега меню на движке opencart.

Сергей

Добрый день! Подскажите, можно ли сделать так, чтобы из этой статьи не все горизонтальное меню категорий менялось на статьи, а только одно. Мне нужно добавить лишь одно выпадающее меню со статьями вида:
Услуги (Услуга1, Услуга2, Услуга3)

Smart

Полезная статья, спасибо!

Андрей

Здравствуйте. Сборка opencart 1.5 шаблон default. После выполненных рекомендаций, не могу войти в панель инструментов. Выдает такие ошибки.
Подскажите как исправить.

Сергей Нечипорук

Андрей, правки нужно было вносить в папку — catalog, а вы насколько я понял перезалили файлы в папке admin. Замените файлы с бекапа на дефолтные и проблема решиться.

Дмитрий

Для Open Cart Version 2.3.0.2 (rs.6) этот способ не подходит, другой код в выше указанных файлах. Есть какое то решение для этой версии

Оставить новый комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *