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

Горизонтальное меню из статей в 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, чтобы вы могли оценить всю мощь функционала, и определится, нужно ли вам покупать тот или другой модуль или нет. Чтобы ничего не пропустить подписывайтесь на мой блог в форме, которая расположена в сайдбаре.

31 комментарий

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавить комментарий

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