хуйу нас не матерятся
Т.к. мы уже переделали 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, достаточно эту галочку не ставить.
Результат нашей работы:
Пример можно посмотреть на http://opencart.allwebstuff.info
Для 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>.
К сожалению, единого рецепта по стилизации дать не могу, т.к. каждый сайт индивидуален.
Спасибо! В целом дошёл сам. Вот это кусочек правда оказался именно тем что хотелось if (!$result['bottom']) {
!)
Добрый день. Вы не могли бы помочь с небольшим редактированием сайта на Opencart 2.3 за оплату? Если возможно, ответьте на почту.
Привет. Нет, не смогу, простите. На самом деле, я уже много лет не работаю на пхп)
Version 2.3.0.2 (rs.6) выдал ошибку Undefined variable: informations , 3 строчка после div id <?php if ($informations) { ?>
Добрый день! Подскажите пожалуйста, возможно ли как то вывести контент из блока html (из админки) в hader ?
В теории, можно, но зачем? Структура шаблонов в опенкарте простая и понятная, специально сделана так, чтобы как можно меньше копипастить кода. Если же что-то из боди утаскивать в хидер, то, скорее всего придётся подпирать всё костылями.
Здравствуйте! Подскажите пожалуйста, как сделать тоже самое только для opencart 1.5.5.1 ? Имею ввиду статьи в шапке. Переименовала дивы, классы, так как там по другому они называются, но что-то все равно не получается ((