Переделываем верхнее меню opencart



Т.к. мы уже переделали opencart под быстрое оформление заказа, теперь нужно убрать из верхнего меню лишние элементы, вроде закладок и личного кабинета. А так же добавить немного нужных ништяков.

Открываем файл: /catalog/view/theme/default/template/common/header.tpl

Удаляем строчки:

    <?php echo $currency; ?>
    <?php echo $language; ?>

В российских реалиях выбор языка и валюты не нужен. Далее т.к. у нас аккаунты не предусмотрены удаляем всё что с ним связано:

        <li class="dropdown"><a href="<?php echo $account; ?>" title="<?php echo $text_account; ?>" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_account; ?></span> <span class="caret"></span></a>
          <ul class="dropdown-menu dropdown-menu-right">
            <?php if ($logged) { ?>
            <li><a href="<?php echo $account; ?>"><?php echo $text_account; ?></a></li>
            <li><a href="<?php echo $order; ?>"><?php echo $text_order; ?></a></li>
            <li><a href="<?php echo $transaction; ?>"><?php echo $text_transaction; ?></a></li>
            <li><a href="<?php echo $download; ?>"><?php echo $text_download; ?></a></li>
            <li><a href="<?php echo $logout; ?>"><?php echo $text_logout; ?></a></li>
            <?php } else { ?>
            <li><a href="<?php echo $register; ?>"><?php echo $text_register; ?></a></li>
            <li><a href="<?php echo $login; ?>"><?php echo $text_login; ?></a></li>
            <?php } ?>
          </ul>
        </li>
        <li><a href="<?php echo $wishlist; ?>" id="wishlist-total" title="<?php echo $text_wishlist; ?>"><i class="fa fa-heart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_wishlist; ?></span></a></li>

Следующая задача более интересная, нужно добавить статьи в шапку opencart, но при этом что бы оно не дублировало аналогичное меню в футере. Находим строчку:

<div id="top-links" class="nav pull-right">

И перед ней вставляем:

    <div id="top-left-links" class="nav pull-left">
      <ul class="list-inline">
      <?php if ($informations) { ?>
          <?php foreach ($informations as $information) { ?>
          <li><a href="<?php echo $information['href']; ?>"><?php echo $information['title']; ?></a></li>
          <?php } ?>
      <?php } ?>
      </ul>
    </div>

Но теперь хедеру непонятно откуда взять массив $informations. Что бы объяснить ему, открываем файл: /catalog/controller/common/header.php в котором где-нибуть в районе 39-40 строчки вставляем следующее:

		$this->load->model('catalog/information');

		$data['informations'] = array();

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

В этом кусочке кода мы подгрузили все статьи в которых НЕ стоит галочка "Отображить снизу".

Теперь что бы статья попала в верхнее меню opencart, достаточно эту галочку не ставить.

Результат нашей работы:

Переделка верхнего меню opencart

Пример можно посмотреть на http://opencart.allwebstuff.info


Сообщество: AWS

Комментариев(11)


ID: #220   Создан:
Автор: Наталья

Здравствуйте! Подскажите пожалуйста, как сделать тоже самое только для opencart 1.5.5.1 ? Имею ввиду статьи в шапке. Переименовала дивы, классы, так как там по другому они называются, но что-то все равно не получается ((

ID: #221   Создан:
Автор: ololoev

Для opencart версии 1.5.х нужно так же в контроллере /catalog/controller/common/header.php добавить выборку массива из меню информации:


		$this->load->model('catalog/information');

		$this->data['informations'] = array();

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

А вот с выводом всего этого в шапку уж немного интересней. Структуру, расположение и стили нужно будет сделать полностью самим. Вот пример как выведено меню в свежем проекте:


<div id="toptopmenu">
    <ul>
      <li><img src="/image/sys/menuborder1.png"><a href="<?php echo $home; ?>"Главная</a></li>
      <?php foreach ($informations as $information) { ?>
      <li><img src="/image/sys/menuborder1.png"><a href="<?php echo $information['href']; ?>" ><?php echo $information['title']; ?></a></li>
      <?php } ?>
    </ul>
</div>

Этот блок вставлен в шаблоне /catalog/view/theme/default/template/common/header.tpl между тегами ```

<body> и <div id="header">




Стили для него: 

#toptopmenu { background:url('/image/sys/menuback1.png') repeat-x left center; padding:0px; margin:0px; border-bottom:1px solid #d6edd9; } #toptopmenu > ul { padding:0; margin:0 auto; list-style-type:none; width:1100px; display:block; font-size:0px; background:url('/image/sys/menuback2.png') repeat-x left center; } #toptopmenu > ul > li { padding:0; margin:0; display:inline-block; height:49px; } #toptopmenu > ul > li > a { padding:0px 15px; margin:0; position:relative; top:-20px; display:inline-block; color:#fff; text-decoration:none; font-size:16px; font-family:arial; font-weight: bold; } #toptopmenu > ul > li:hover { background:#f4f4f4; } #toptopmenu > ul > li:hover > a { color:#5d9a63; }



Как это выглядит на живом сайте <a href="http://store.surgutreklama24.ru/">можно посмотреть тут</a>.

К сожалению, единого рецепта по стилизации дать не могу, т.к. каждый сайт индивидуален. 
ID: #222   Создан:
Автор: Николай

Спасибо! В целом дошёл сам. Вот это кусочек правда оказался именно тем что хотелось if (!$result['bottom']) {

!)

ID: #223   Создан:
Автор: Вадим

Здравствуйте. Добавил ссылки в верхнее меню. Они съехали вверх.

ID: #224   Создан:
Автор: ololoev
>>223

Могу лишь предположить, что что-то не так со стилями.

ID: #225   Создан:
Автор: Сергей

Добрый день. Вы не могли бы помочь с небольшим редактированием сайта на Opencart 2.3 за оплату? Если возможно, ответьте на почту.

ID: #226   Создан:
Автор: ololoev
>>225

Привет. Нет, не смогу, простите. На самом деле, я уже много лет не работаю на пхп)

ID: #227   Создан:
Автор: Сева

Version 2.3.0.2 (rs.6) выдал ошибку Undefined variable: informations , 3 строчка после div id <?php if ($informations) { ?>

ID: #228   Создан:
Автор: ololoev
>>227

Привет. Там чуть ниже есть ещё 1 блок кода, который эту переменную и создаст.

ID: #229   Создан:
Автор: Юрий

Добрый день! Подскажите пожалуйста, возможно ли как то вывести контент из блока html (из админки) в hader ?

ID: #230   Создан:
Автор: ololoev
>>229

В теории, можно, но зачем? Структура шаблонов в опенкарте простая и понятная, специально сделана так, чтобы как можно меньше копипастить кода. Если же что-то из боди утаскивать в хидер, то, скорее всего придётся подпирать всё костылями.

Всего: 11 комментариев на 1 страницах

Ваш комментарий будет анонимным. Чтобы оставить не анонимный комментарий, пожалуйста, зарегистрируйтесь



Сообщества