Вход





Забыли пароль?

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

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

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

Для начала будем править файл контроллера, он находится в — /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'])
            );
        }

После чего нам нужно подправить файл шаблона opencart, в котором указан вывод меню. Для этого открываем файл — /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% поддерживать мультиязычность.