Как вывести статьи в шапку в OpenCart
|Каждый начинающий вебдизайнер рано или поздно сталкивается с тем что в шаблоне, который он купил или скачал для своего магазина в шапке выводятся категории, какая-то информация, к примеру «О нас», «Контакты» но не статьи. В этой статье (извините за тавтологию) мы рассмотрим как побороть любой шаблон и вывести необходимые статьи наверх.
Чтобы вывести в шапку список статей нам надо будет править 2 файла.
Первый www/ваш сайт/catalog/controller/common/header.php. В этом файле найдите строчку
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') |
и перед ней впишите
$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']) ); } |
Тем самым вы загружаете необходимые данные для дальнейшей передачи в файл шаблона. Далее нам надо править файл шаблона, он находится по пути:
www/ваш сайт/catalog/view/theme/название вашей темы/template/common/header.tpl |
И в нужное место вам надо вставить код:
<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> |
В моем случае, надо было вывести всего одну статью, «О нас» поэтому я отключил лишние из панели администратора. Но у меня не вывелась разделительная горизонтальная палочка, что конечно же мешало нормальному чтению сайта и значительно ухудшало его юзабилити.
Это исправить очень просто. Достаточно в последний код, перед
<li><a href="<?php echo $information['href']; ?>"><?php echo $information['title']; ?></a></li> |
Вставить такой код: (еще один пункт списка)
<li> </li> |
Как убрать категории в шапке сайта на OpenCart и вывести туда статьи и произвольные элементы?
Для тех кто хочет сделать как у меня, создать свою шапку из произвольных элементов, я написал еще одну инструкцию.
Буду все показывать на примере сайта в котором в шапке были только рубрики, а надо было вывести такие кнопки:
- Главная
- Каталог (список категория, и подкатегорий к ним). Удобно для пользователя, и очень хорошо для индексации сайта.
- Контакты
- О нас
С начала, как и в первом случаее идем в файл www/ваш_сайт/catalog/controller/common/header.php и перед строчкой
$this->data['description'] = $this->document->getDescription(); |
Вписываем:
$this->data['sitemap'] = $this->url->link('information/sitemap'); $this->data['text_sitemap'] = $this->language->get('text_sitemap'); $this->data['text_contact'] = $this->language->get('text_contact'); |
Далее будет править файл шаблона, напомню, находится в папке www/ваш сайт/catalog/view/theme/название вашей темы/template/common/header.tpl
По умолчанию, вывод категорий в шапке выводиться таким кодом:
<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 { ?> <?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> |
Чтобы сделать как у меня (вывести четыре кнопки), меняем его на такой код:
<div id="menu"> <ul> <li><a href="<?php echo $home; ?>"><?php echo $text_home; ?></a> </li> <li><a href="<?php echo $sitemap; ?>"><?php echo $text_sitemap; ?></a></li> <li><a href="<?php echo $contact; ?>"><?php echo $text_contact; ?></a></li> <div id="menu"> <ul> <?php foreach ($informations as $information) { ?> <li> </li> <li><a href="<?php echo $information['href']; ?>"><?php echo $information['title']; ?></a></li> <?php } ?> </ul> </div> </ul> </div> |
Если вам что-то не надо выводить, к примеру «каталог» вы можете убрать соответствующие строки:
<li><a href=»<?php echo $home; ?>»><?php echo $text_home; ?></a> </li> — отвечает за вывод кнопки «Главная»
<li><a href=»<?php echo $sitemap; ?>»><?php echo $text_sitemap; ?></a></li> — отвечает за вывод кнопки «Каталог»
<li><a href=»<?php echo $contact; ?>»><?php echo $text_contact; ?></a></li> — отвечает за вывод кнопки «Контакты»
Если у вас возникли вопросы, напишите пожалуйста в комментариях, попробую вам помочь.
а как узнать, или посмотреть id статьи? а лутше всех сразу…
Id статьи вы можете узнать таким образом:
1) Зайти в админку
2) Зайти в редактирование статьи у которой хотите найти ID
3) обратить внимание на URL адрес в конце будет написанно ID статьи. К примеру id=13
Добрый день!
У меня после Главная
Карта сайта
Связаться с нами
Вылезла ошибка:
Notice: Undefined variable: informations in Z:\home\localhost\www\bonusprice\catalog\view\theme\default\template\common\header.tpl on line 98Warning: Invalid argument supplied for foreach() in Z:\home\localhost\www\bonusprice\catalog\view\theme\default\template\common\header.tpl on line 98
Вы вообще что-то не то делаете… У вас OpenCart?
пропущена строчка
$this->data[‘sitemap’] = $this->url->link(‘information/contract’);
Хочется сделать вывод всего списка статей на сайте по ссылке в верхнем меню. Что то типа href /articles/ и по нажатию на эту ссылку выводится на новоей странице все статьи.
Сейчас у меня так работает вывод новостей по ссылке /news/, а вот по статьям что то не могу додумать! ((
Заранее спасибо за помощь!
Добрый день. А если мне нужно сделать больше 4 пунктов в верхнем меню, то как это осуществить?
Так же само как и 4 пункта только на один больше. Все по инструкции
Здравствуйте. У меня вылезла такая ошибка :
Notice: Undefined variable: informations in C:\OpenServer\domains\localhost\fura_m7\catalog\view\theme\default\template\common\header.tpl on line 79Warning: Invalid argument supplied for foreach() in C:\OpenServer\domains\localhost\fura_m7\catalog\view\theme\default\template\common\header.tpl on line 79
Опенкарт версии 1.5.6.1
И хотелось бы, чтобы вместо карты сайта переходило сразу в каталог.
После какого пункта у вас вылезла такая ошибка?
Добрый день!
у меня пункты меню вывелись в столбец. Как сделать в строку?