Наработки Opencart

Тема в разделе "OpenCart", создана пользователем gavag, 28 фев 2013.

  1. x-guest

    x-guest Команда форума

    Регистрация:
    8 окт 2012
    Сообщения:
    276
    Симпатии:
    977
    Устанавливаем фон для каждой из категории
    (Свое фоновое изображение в каждой категории (background))
     
    Влад Хантер, stn1234, Elfa1111 и 6 другим нравится это.
  2. x-guest

    x-guest Команда форума

    Регистрация:
    8 окт 2012
    Сообщения:
    276
    Симпатии:
    977
    Краткое описание в : Новые поступления, Рекомендуем, Хиты продаж, Акции
    (Выводим краткое описание в модулях под картинкой товара - Новые поступления, Рекомендуемые товары, Хиты продаж и Акции)
     
  3. Florenco

    Florenco

    Регистрация:
    3 мар 2013
    Сообщения:
    220
    Симпатии:
    101
    С позволения автора, напишу, что это делается ещё проще:

    catalog/controller/product/category.php

    перед:
    if ($category_info['image']) {

    добавить:
    $this->data['bg'] = $category_info['category_id'];


    catalog/view/theme/ТЕМА/template/product/category.tpl

    после:
    <?php echo $header; ?>

    добавить:
    <style type="text/css">
    <!--
    body {
    background: url('catalog/view/theme/default/image/bg<?php echo $bg; ?>.jpg') no-repeat center top fixed;
    }
    -->
    </style>
     
    zerofirefox, stn1234, nick885 и 5 другим нравится это.
  4. Krasovskiy

    Krasovskiy

    Регистрация:
    22 фев 2013
    Сообщения:
    81
    Симпатии:
    79
    Интересная фишка:
    АНИМИРОВАННЫЙ ЛОГОТИП

    Вставляем в файл stylesheet.css

    Код:
    #logo img{-webkit-animation-duration:1s;-moz-animation-duration:1s;animation-timing-function:ease}
    #logo a:hover img{-webkit-animation-name:tada;-moz-animation-name:tada;animation-name:tada}
    @-webkit-keyframes tada{0%{-webkit-transform:scale(1)}
    10%,20%{-webkit-transform:scale(0.9) rotate(-3deg)}
    30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg)}
    40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg)}
    100%{-webkit-transform:scale(1) rotate(0)}
    }
    @-moz-keyframes tada{0%{-moz-transform:scale(1)}
    10%,20%{-moz-transform:scale(0.9) rotate(-3deg)}
    30%,50%,70%,90%{-moz-transform:scale(1.1) rotate(3deg)}
    40%,60%,80%{-moz-transform:scale(1.1) rotate(-3deg)}
    100%{-moz-transform:scale(1) rotate(0)}
    }
    @keyframes tada{0%{transform:scale(1)}
    10%,20%{transform:scale(0.9) rotate(-3deg)}
    30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}
    40%,60%,80%{transform:scale(1.1) rotate(-3deg)}
    100%{transform:scale(1) rotate(0)}
    }
    Чистим кеш. Всё.
    Демо
     
    vdevi, deny7722, Дмитрий Днепр и 5 другим нравится это.
  5. kama812

    kama812

    Регистрация:
    30 мар 2013
    Сообщения:
    311
    Симпатии:
    194
    skiv14, deny7722, id3nt1fy и 2 другим нравится это.
  6. Kimal

    Kimal

    Регистрация:
    5 апр 2013
    Сообщения:
    37
    Симпатии:
    17

    Спасибо. а как сделать чтобы прокрутка была не быстро за секунду а медленно. я в смысле того чтобы не резко менялось, а плавно
     
    vdevi нравится это.
  7. VIP24

    VIP24 Верховный Главнокомандующий

    Регистрация:
    8 июл 2013
    Сообщения:
    239
    Симпатии:
    1.204
    Добавляем новую позицию для модулей Opencart 1.5.x

    Актуально для Opencart 1.5.x, тестировалось на версиях 1.5.3 и 1.5.4
    В стандартном варианте Opencart имеет всего четыре положения модулей — шапка, левая колонка, правая колонка, низ сайта. Для большинства простых сайтов этого достаточно, но для более сложных конструкций этого мало. Надо сразу заметить, что объявление новых «регионов» для модулей не так просто, как в других CMS, например Wordpress или Drupal. Opencart в этом плане менее гибкая система, но это решаемо, поэтому для тех, кому нужно добавить новые расположения для модулей, и будет эта статья.
    Одним из самых часто используемых положений является расположение модулей непосредственно в подвале - футере сайта. Во-первых, футер выводится на всех страницах сайта, поэтому отображенная в нем информация будет доступна с любой страницы, во-вторых, в стандартной версии явно не хватает возможности редактировать то, что будет показано в футере.
    Добавляем новую позицию модулей:

    1. Создадим файл контроллера. Заходим в папку catalog/controller/common/ и создадим файл footer_new.php. В файл вставим следующий код:
    Код:
    <?php
    class ControllerCommonFooterNew extends Controller {
    	public function index() {
    		$this->load->model('design/layout');
    		$this->load->model('catalog/category');
    		$this->load->model('catalog/product');
    		$this->load->model('catalog/information');
     
    		if (isset($this->request->get['route'])) {
    			$route = (string)$this->request->get['route'];
    		} else {
    			$route = 'common/home';
    		}
     
    		$layout_id = 0;
     
    		if ($route == 'product/category' && isset($this->request->get['path'])) {
    			$path = explode('_', (string)$this->request->get['path']);
     
    			$layout_id = $this->model_catalog_category->getCategoryLayoutId(end($path));
    		}
     
    		if ($route == 'product/product' && isset($this->request->get['product_id'])) {
    			$layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']);
    		}
     
    		if ($route == 'information/information' && isset($this->request->get['information_id'])) {
    			$layout_id = $this->model_catalog_information->getInformationLayoutId($this->request->get['information_id']);
    		}
     
    		if (!$layout_id) {
    			$layout_id = $this->model_design_layout->getLayout($route);
    		}
     
    		if (!$layout_id) {
    			$layout_id = $this->config->get('config_layout_id');
    		}
     
    		$module_data = array();
     
    		$this->load->model('setting/extension');
     
    		$extensions = $this->model_setting_extension->getExtensions('module');
     
    		foreach ($extensions as $extension) {
    			$modules = $this->config->get($extension['code'] . '_module');
     
    			if ($modules) {
    				foreach ($modules as $module) {
    					if ($module['layout_id'] == $layout_id && $module['position'] == 'footer_new' && $module['status']) {
    						$module_data[] = array(
    							'code'	   => $extension['code'],
    							'setting'	=> $module,
    							'sort_order' => $module['sort_order']
    						);
    					}
    				}
    			}
    		}
     
    		$sort_order = array();
     
    		foreach ($module_data as $key => $value) {
    			$sort_order[$key] = $value['sort_order'];
    		}
     
    		array_multisort($sort_order, SORT_ASC, $module_data);
     
    		$this->data['modules'] = array();
     
    		foreach ($module_data as $module) {
    			$module = $this->getChild('module/' . $module['code'], $module['setting']);
     
    			if ($module) {
    				$this->data['modules'][] = $module;
    			}
    		}
     
    		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/footer_new.tpl')) {
    			$this->template = $this->config->get('config_template') . '/template/common/footer_new.tpl';
    		} else {
    			$this->template = 'default/template/common/footer_new.tpl';
    		}
     
    		$this->render();
    	}
    }
    ?>
    2. Сделаем TPL файл для новой позиции. В папке catalog/view/theme/default/template/common/ (вместо default, конечно же, заходим в папку вашего шаблона, для которого регистрируете новую позицию) создаем файл footer_new.tpl. В файл вставляем код:
    Код:
    <?php foreach ($modules as $module) { ?>
       <?php echo $module; ?>
    <?php } ?>
    3. Саму позицию мы уже зарегистрировали, теперь надо описать ее вывод в нужном месте шаблона. Это делается в несколько этапов.
    Редактируем файл catalog/controller/common/footer.php (обратите внимание — это обычный файл футера, а не footer_new.php, который мы создавали в начале статьи), ищем строку
    Код:
    $this->render();

    и вставляем перед ней
    Код:
    $this->children = array(	
     
    'common/footer_new'
     
    );
    Контроллер объявили, теперь редактируем tpl файл catalog/view/theme/default/template/common/footer.tpl, в нем, как правило, один большой блок
    <div id="footer"></div>, в зависимости от того, где нам нужно вывести модули, вставляем следующий код до или после блока, я вставлю после, чтобы новая позиция была в самом низу сайта:
    Код:
    <?php echo $footer_new; ?>

    4. Новая позиция не добавляется в админку автоматически, поэтому придется дописывать ее каждому модулю вручную. Поэтому решите сразу, какие модули будут отображаться на новом месте, чтобы не выполнять лишнюю работу. Редактируем файл необходимого модуля, например, модуль последних поступлений admin/view/template/module/latest.tpl, ищем в нем подобный код:
    Код:
    <?php if ($module['position'] == 'content_top') { ?>
       <option value="content_top" selected="selected"><?php echo $text_content_top; ?></option>
    <?php } else { ?>
       <option value="content_top"><?php echo $text_content_top; ?></option>
    <?php } ?>  
    И перед ним добавляем:
    Код:
    <?php if ($module['position'] == 'footer_new') { ?>
       <option value="footer_new" selected="selected">Footer New</option>
    <?php } else { ?>
       <option value="footer_new">Footer New</option>
    <?php } ?>
    Ниже в файле ищем строку:
    Код:
    html += '	  <option value="content_top"><?php echo $text_content_top; ?></option>';

    Добавляем над ней:
    Код:
    html += '	  <option value="footer_new">Footer New</option>';

    5. Если все было сделано правильно, теперь можно зайти в админку в настройки модуля последних поступлений, и вы увидите, что кроме четырех стандартных позиций добавилась новая.[​IMG]
    Выбираем ее и смотрим на результаты:
    [​IMG]
    Теперь останется лишь описать стили для отображения необходимых модулей на новой позиции. Для того, кто справился с добавлением новой позиции, думаю, это не составит труда :Smile:
     
    skiv14, vdevi, copfsb и 7 другим нравится это.
  8. VIP24

    VIP24 Верховный Главнокомандующий

    Регистрация:
    8 июл 2013
    Сообщения:
    239
    Симпатии:
    1.204
    Увеличение "веса" ссылки для категории продуктов (тестировалось на v1.5.4)

    Если включён режим SEO URL, то для продуктов в тело тега <head> добавляется каноническое имя страницы <link href="http://your.domain.com/seo_url" rel="canonical"/>, которое сообщает поисковому роботу приоритетный адрес этой страницы.

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

    В файл ./catalog/controller/product/category.php после строки
    Код:
    $this->document->setKeywords($category_info['meta_keyword']);
    добавьте
    Код:
    $this->document->addLink($this->url->link('product/category', 'path=' . $this->request->get['path']), 'canonical');
     
    Peters, skiv14, fob и ещё 1-му нравится это.
  9. DionisCR

    DionisCR

    Регистрация:
    17 фев 2013
    Сообщения:
    108
    Симпатии:
    57
    Часто бывает, что нужно убрать товар, который закончился из категории, чтобы пользователи его не видели, но оставить его доступ по прямой ссылке для поисковиков. Делается очень просто:

    Удаляем первый
    Код:
    AND p.status = '1'
    в файле /catalog/model/catalog/product.php

    В админке скрытый товар отключаем.
     
    bigvlad, fob, ion4 и 2 другим нравится это.
  10. Veles

    Veles

    Регистрация:
    27 янв 2013
    Сообщения:
    212
    Симпатии:
    141
    Изменение после нажатия кнопки "КУПИТЬ" на "ОФОРМИТЬ"
    Находим файл по пути /catalog/view/theme/ваша тема/template/product/product.tpl
    Примерно 360 строка, в методе

    $('#button-cart').bind('click',function(){

    находим код, начинающийся с

    if(json['success']){
    и меняем его содержимое на:
    $('#cart .checkout-btn').removeClass('hideimportant');
    $('.product-info .cart').fadeOut('fast',function(){
    $(this).html('Товар добавлен в <a href="/index.php?route=checkout/cart">корзину</a>, теперь можно <a class="button" href="/index.php?route=checkout/checkout"><span>Оформить</span></a>').fadeIn('fast');});
    $('#cart_total').html(json['total']);

    чтобы получилось:
    PHP:
    if (json['success']) {
        $(
    '#cart .checkout-btn').removeClass('hideimportant');
        $(
    '.product-info .cart').fadeOut('fast',function () {
    $(
    this).html('Товар добавлен в <a href="/index.php?route=checkout/cart">корзину</a>, теперь можно <a class="button" href="/index.php?route=checkout/checkout"><span>Оформить</span></a>').fadeIn('fast');
        }) ;
     
        $(
    '#cart_total').html(json['total']);
      }
    посмотреть как это выглядит можно тут: of-d.ru нажав кнопку "купить" в карточке товара.
     
    Руслан1988, Дмитрий Днепр и weghjn нравится это.
  11. moneymc

    moneymc

    Регистрация:
    22 янв 2013
    Сообщения:
    200
    Симпатии:
    36
    Когда я ставил свою любимую тему для админки metro-ui на opencart 1.5.5.1, то она отказалась работать. Разработчик обновление не выпускал, поэтому решил сам поправить. Пользуйтесь, на здоровье.

     
    Последнее редактирование: 5 сен 2013
  12. AnOcToJI

    AnOcToJI

    Регистрация:
    28 дек 2012
    Сообщения:
    293
    Симпатии:
    186
    Не знаю, может кому пригодится, а может и нет, делал для себя, чтобы по 100 раз не переписывать десятки файлов
    хлебные крошки на vqmod (делаем не кликабельным конечный путь) - кому для красоты и эстетики, а кому для SEO
    за основу взято исправление от Einshtein с русского оф форума
    Код:
    <?php foreach ($breadcrumbs as $i=> $breadcrumb) { ?>
    <?php echo $breadcrumb['separator']; ?><?php if($i+1<count($breadcrumbs)) { ?><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a> <?php } else { ?><?php echo $breadcrumb['text']; ?><?php } ?>
    <?php } ?>
     
    padlas, milkajoy, xersonets и 2 другим нравится это.
  13. Veles

    Veles

    Регистрация:
    27 янв 2013
    Сообщения:
    212
    Симпатии:
    141
    Запоминание метода сортировки
    Очень понравилась эта доработка:
    Теперь при сёрфинге по сайту метод сортировки товаров будет оставаться тем, каким он был указан прежде.
     
    nick885 и termotorg.shop нравится это.
  14. Zulus

    Zulus Команда форума

    Регистрация:
    20 дек 2012
    Сообщения:
    682
    Симпатии:
    686
    Изменение и использование UPC, EAN, JAN, ISBN и MPN для вывода дополнительных данных в карточку товара.
    Уже как то было описание как поменять переменные, но мне показалось оно сложноватым и для себя я переделал один бесплатный модуль, может кому пригодиться.
     
    Последнее редактирование: 30 сен 2013
    nick885 нравится это.
  15. x-guest

    x-guest Команда форума

    Регистрация:
    8 окт 2012
    Сообщения:
    276
    Симпатии:
    977
    Делаем кнопку Распечатать счет на странице заказов OPENCART
     
    dem03x, ruscadet, Ping и ещё 1-му нравится это.
  16. gnommong

    gnommong

    Регистрация:
    29 июн 2013
    Сообщения:
    176
    Симпатии:
    194
    Картинки с чекбоксом

    Находим

    Заменяем на
     
  17. angur

    angur

    Регистрация:
    21 окт 2013
    Сообщения:
    20
    Симпатии:
    1
    В админке товаров много полезных но не используемых полей типа EAN, JAN, ISBN и так далее. Они мешают, комментировать или удалять будет не правильно так как часть модулей могут использовать их для себя, например простые стикеры.

    Я их просто скрываю. В файле /admin/view/template/catalog/product_form.tpl
    добавляю
    <tr style="display:none;">
     
  18. serval04

    serval04

    Регистрация:
    9 сен 2013
    Сообщения:
    16
    Симпатии:
    5
    Вдруг кому-то пригодится - Установка "Экспорт товаров в ВКонтакте без правки файлов" (vqmod обязателен)

    Код:
    <modification>
        <id><![CDATA[vk4_export]]></id>
        <version><![CDATA[0.1]]></version>
        <vqmver><![CDATA[2.4.1]]></vqmver>
        <author><![CDATA[serval]]></author>
        <file name="admin/controller/common/header.php">
            <operation>
                <search position="after"><![CDATA[$this->data['zone'] = $this->url->link('localisation/zone', 'token=' . $this->session->data['token'], 'SSL');]]></search>
                    <add><![CDATA[$this->data['vk_export'] = $this->url->link('extension/vk_export', 'token=' . $this->session->data['token'], 'SSL');
    $this->data['vk_export_albums'] = $this->url->link('extension/vk_export/albums', 'token=' . $this->session->data['token'], 'SSL');
    $this->data['vk_export_setting'] = $this->url->link('module/vk_export', 'token=' . $this->session->data['token'], 'SSL');
    $this->data['vk_export_report'] = $this->url->link('extension/vk_export/report', 'token=' . $this->session->data['token'], 'SSL');
    
    $this->language->load('extension/vk_export_header');
    $this->data['text_vk_export'] = $this->language->get('text_vk_export');
    $this->data['text_vk_export_albums'] = $this->language->get('text_vk_export_albums');
    $this->data['text_vk_export_setting'] = $this->language->get('text_vk_export_setting');
    $this->data['text_vk_export_cron_report'] = $this->language->get('text_vk_export_cron_report');]]></add>
            </operation>
        </file>   
            <file name="admin/view/template/common/header.tpl">
            <operation>
                <search position="after"><![CDATA[<li><a href="<?php echo $feed; ?>"><?php echo $text_feed; ?></a></li>]]></search>
                    <add><![CDATA[<li><a href="<?php echo $vk_export; ?>" class="parent"><?php echo $text_vk_export; ?></a>
      <ul>
        <li><a href="<?php echo $vk_export; ?>"><?php echo $text_vk_export; ?></a></li>
        <li><a href="<?php echo $vk_export_albums; ?>"><?php echo $text_vk_export_albums; ?></a></li>
        <li><a href="<?php echo $vk_export_setting; ?>"><?php echo $text_vk_export_setting; ?></a></li>
        <li><a href="<?php echo $vk_export_report; ?>"><?php echo $text_vk_export_cron_report; ?></a></li>
      </ul>
    </li>]]></add>
            </operation>
        </file>   
    </modification>
     
    Регина, Xteam и Pelmen нравится это.
  19. serval04

    serval04

    Регистрация:
    9 сен 2013
    Сообщения:
    16
    Симпатии:
    5
    На 1.5.3.1 и 1.5.4.1.2 стоит у меня. По идее версия не влияет.
    Jam, просто сохраняешь в файле .xml (например vkexport.xml), и сохраняешь в директории /vqmod/xml, работает только с vqmod.
    Поясняю зачем этот надо: "Это упрощает жизнь, если нужно обновить OpenCart, и не трогать снова файлы. У меня все изменения движка работают через vqmod, и мне достаточно переустановить vqmod".
     
  20. x-guest

    x-guest Команда форума

    Регистрация:
    8 окт 2012
    Сообщения:
    276
    Симпатии:
    977
    Делаем плавающие мега меню для Pav Theme (проверялось Pav Decor)
     
    Krasovskiy, boxerrr, VeryGood и ещё 1-му нравится это.