Всё о web

Для чайников и не только


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

Февраль 12, 2015

Т.к. мы уже переделали 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, достаточно эту галочку не ставить.

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

topmenu

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



Комментарии

7 комментариев | “Переделываем верхнее меню opencart

  1. Аватар Наталья:

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

  2. Илья Илья:

    Для 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'])
    				);
    			}
    		}
    

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

    
    

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

     и 

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

    #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;
      }
    

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

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

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

    !)

  4. Аватар Вадим:

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

    1. Илья Илья:

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

  5. Аватар Сергей:

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

    1. Илья Илья:

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

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

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