Наработки Opencart

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

  1. halfhope

    halfhope

    Регистрация:
    31 дек 2012
    Сообщения:
    284
    Симпатии:
    309
    Если используйте memcached сервер. Необходимо заменить файл system/library/cache.php
    PHP:
    <?php
        
    class Cache {
            public function 
    __construct() {
                if(
    class_exists('Memcache')) {
                    
    $this->memcache = new Memcache;
                } elseif(
    class_exists('Memcached')) {
                    
    $this->memcache = new Memcached;
                }

                
    $this->memcache->addServer('127.0.0.1''11211');

                
    $this->site_key substr(md5(HTTP_SERVER),0,5);
            }

            public function 
    get($key) {
                
    $cache $this->memcache->get($key.'.'.$this->site_key);
                return 
    unserialize($cache);
            }

            public function 
    set($key$value) {
                  
    $result $this->memcache->replace($key.'.'.$this->site_keyserialize($value));

                  if(
    $result == false) {
                      
    $this->memcache->set($key.'.'.$this->site_keyserialize($value), false3600);
                      
    // param1 - key
                      // param2 - value
                      // param3 - use_gzip (use compression)
                      // param4 - life_time (cache expires)
                  
    }
            }

            public function 
    delete($key) {
                
    $this->memcache->delete($key);
            }
        }
    ?>
     
    HPlus и alex5151 нравится это.
  2. Lena_&9

    Lena_&9

    Регистрация:
    23 фев 2014
    Сообщения:
    71
    Симпатии:
    98
    Дополнение админки, для прописывания ключевых слов, для главной страницы

    1. открываем - admin/controller/setting/setting.php
    а.) после строки : $this->data['entry_meta_description'] = $this->language->get('entry_meta_description');
    вставляем : $this->data['entry_meta_keywords'] = $this->language->get('entry_meta_keywords');
    $this->data['text_meta_keywords'] = $this->language->get('text_meta_keywords');

    б.) ниже после : if (isset($this->request->post['config_meta_description'])) {
    $this->data['config_meta_description'] = $this->request->post['config_meta_description'];
    } else {
    $this->data['config_meta_description'] = $this->config->get('config_meta_description');
    }

    вставляем : if (isset($this->request->post['config_meta_keywords'])) {
    $this->data['config_meta_keywords'] = $this->request->post['config_meta_keywords'];
    } else {
    $this->data['config_meta_keywords'] = $this->config->get('config_meta_keywords');
    }

    2. открываем - admin/language/russian/setting/setting.php
    а.) после строки : $_['entry_meta_description'] = 'Мета-тег Description:';
    вставляем : $_['entry_meta_keywords'] = 'Мета-тег Keywords:';
    $_['text_meta_keywords'] = 'Нет ключевых слов';

    3. открываем - admin/view/template/setting/setting.tpl
    а.) после строки :
    <tr>
    <td><?php echo $entry_meta_description; ?></td>
    <td><textarea name="config_meta_description" cols="40" rows="5"><?php echo $config_meta_description; ?></textarea></td>
    </tr>

    вставляем :
    <tr>
    <td><?php echo $entry_meta_keywords; ?></td>
    <td><textarea name="config_meta_keywords" cols="40" rows="5">
    <?php if (empty ($a)) {echo $text_meta_keywords;} else {echo $config_meta_keywords; } ?></textarea></td>
    </tr>

    Заходим в админку > Настройки > Витрина > Видим новое поле для ввода - meta keywords
     
    hoobabooba, Zulus, Ping и ещё 1-му нравится это.
  3. boxerrr

    boxerrr

    Регистрация:
    8 авг 2013
    Сообщения:
    105
    Симпатии:
    36
    x-guest, x-guest, x-guest,
    а как сделать чтобы он отображался не вверху а внизу????
    --- Добавлено, 1 мар 2014 ---
    Подскажите как уменшить длину отображения именя в категории к примеру было так Русский язык. 5Класс Афанасьева а надо так Русский язык ну или что бы просто указать кол-во отображающих символов
     
    Последнее редактирование: 1 мар 2014
    rusalka_tany нравится это.
  4. bosten

    bosten

    Регистрация:
    2 май 2013
    Сообщения:
    153
    Симпатии:
    33
    В карточке товара отображается надпись пример : Цена на 28. 03. 14
    [​IMG]

    путь: catalog\view\theme\Ваша тема\template\product\product
    Вставить код
    <table width="90%">
    <tr>
    <td>&nbsp;</td>
    <td align="right"><table width="176">
    <tr>
    <td width="91" align="right" valign="top"><strong>Цена на</strong> </td>
    <td width="73" align="right" valign="top" ><script language="JavaScript" type="text/javascript"><!--
    var d = new Date();

    var month=new Array ( "01.","02.","03.","04.","05.","06.",
    "07.","08.","09.","10.","11.","12.");

    document.write(d.getDate()+ " ." + month[d.getMonth()]
    + " " + d.getFullYear() + " ");
    //--></script></td>
    </tr>
    </table></td>
    </tr>
    </table>

    над этой строчкой
    <h1><span><?php echo $heading_title; ?></span></h1>
     
    Последнее редактирование: 31 мар 2014
    dedvandal, five555, buldozer и 2 другим нравится это.
  5. boxerrr

    boxerrr

    Регистрация:
    8 авг 2013
    Сообщения:
    105
    Симпатии:
    36
    Удаляем надпись работает на Opencart в письме при оформлении заказа
    В файле /catalog/view/theme/ВАША ТЕМА/template/mail/order.tpl удаляем строчку
    <p style="margin-top: 0px; margin-bottom: 20px;"><?php echo $text_powered; ?></p>
     
    skiv14, buldozer, Регина и ещё 1-му нравится это.
  6. Fiable

    Fiable

    Регистрация:
    16 авг 2014
    Сообщения:
    172
    Симпатии:
    114
    Решение проблемы с верхним меню (Добавляем свое меню, без категорий)

    Вот поработаем с фаликом.



    В файле /catalog/view/theme/ваша_тема/template/common/header.tpl



    находите код (112 строка)



    <?php if ($categories) { ?>
    <div id="menu">
    <ul>
    <?php foreach ($categories as $category) { ?>
    <li><?php if ($category['active']) { ?>
    <a href="<?php echo $category['href']; ?>"><?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']):wink: { ?>
    <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 } ?>



    В нем добавляете какие угодно ссылки. Необходимо понимать, что пункты расположены в тегах <li></li>, а подпункты почему-то в <div></div>

    Например пункт с подпунктом нужно прописать так



    <li>Пункт

    <div> Подпункт

    Подпункт

    </div>

    </li>


    Если к примеру нужно в начале меню сделать ссылку на главную, а потом оставить категории каталога, пишите так



    <?php if ($categories) { ?>

    <div id="menu">

    <ul>

    <li><a href="/">Главная</a></li>

    <?php foreach ($categories as $category) { ?>

    <li><?php if ($category['active']) { ?>

    <a href="<?php echo $category['href']; ?>"><?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']):wink: { ?>

    <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 } ?>

    Если нужно добавить после каталога, пишите типа такого



    <?php if ($categories) { ?>
    <div id="menu">
    <ul>
    <?php foreach ($categories as $category) { ?>
    <li><?php if ($category['active']) { ?>
    <a href="<?php echo $category['href']; ?>"><?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']):wink:/>/> { ?>
    <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 } ?>
    <li><a href="/">Любая ссылка</a></li>
    </ul>
    </div>
    <?php } ?>



    А чтобы русский текст в браузере отображался нормально, а не "крокозябрами", сохраните header.tpl в кодировке UTF-8 (без ВОМ)

    (для Notepad++ - верхнее меню кодировка/UTF-8 (без ВОМ))
     
    kino-man, Громобой и buldozer нравится это.
  7. Lena_&9

    Lena_&9

    Регистрация:
    23 фев 2014
    Сообщения:
    71
    Симпатии:
    98
    catalog/view/theme/default/template/common/footer.tpl

    В самом низу ищите <div id="powered"><?php echo $powered; ?></div> и закоментируйте <!-- -->
     
    Громобой нравится это.
  8. nick885

    nick885

    Регистрация:
    14 мар 2013
    Сообщения:
    101
    Симпатии:
    40
    Такая тема еще. Если после переноса не работает ЧПУ из-за mod_rewrite. То нужно в /etc/apache2/apache2.conf

    добавить:
    Код:
    <Directory /var/www/site/>
            Options Indexes FollowSymLinks
            AllowOverride ALL
            Require all granted
    </Directory>
    
     
  9. ostrun

    ostrun

    Регистрация:
    7 ноя 2012
    Сообщения:
    140
    Симпатии:
    37
    Выполнил всё по пунктам, но почему-то после сохранения при заходе обратно в настройки-витрина, там по прежнему написано "Нет ключевых слов".
    (1.5.4.1.2)
     
  10. avril

    avril

    Регистрация:
    5 авг 2014
    Сообщения:
    146
    Симпатии:
    136
    Если Вы хотите добавить кнопку "Купить" перед заголовком названия товара на странице его карточки, то необходимо сделать следующее:
    Открываем
    Код:
    catalog/view/theme/ваша тема/template/product/product.tpl
    Находим
    Код:
    </h1>
    И заменяем на
    Код:
    <input type="button" value="<?php echo $button_cart; ?>" id="button-cart" class="button" /></h1>
     
  11. chukcha

    chukcha

    Регистрация:
    9 окт 2014
    Сообщения:
    448
    Симпатии:
    119
    Печалько...
    п1.
    ver 1.5.6.4

    Код:
    $product_total = $this->model_catalog_product->getTotalProducts($data);
    
                        $children_data[] = array(
                            'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),
    Это не сработает...

    Speed Tip 6: Add Image Dimensions To OpenCart

    Если вы понимаете что-то в коде
    Если не понимаете, то...
    1. output прогоняется регеспом (задержка)
    Затем открывается каждое изображение и вычисляется его размерность
     
    kama812 нравится это.
  12. sadykovs

    sadykovs

    Регистрация:
    7 янв 2014
    Сообщения:
    13
    Симпатии:
    1
    а можно в строке $_['text_powered'] = 'Работает на <a href="http://myopencart.ru">ocStore</a><br /> %s &copy; %s'; в файле \catalog\language\russian\common\footer.php просто заменить на $_['text_powered'] = ''; будет тот же эффект
    --- Добавлено, 26 янв 2015 ---
    КАК МОЖНО ОТРЕДАКТИРОВАТЬ НИЖНЮЮ ЧАСТЬ СТАНДАРТНОЙ ТЕМЫ OPENCART
    За вывод нижней части в стандартной теме Opencart отвечает файл
    catalog\view\theme\default\template\common\footer.tpl
    в нем соотвественно есть следующие блоки, отвечающие за вывод
    <h3><?php echo $text_information; ?></h3> – заголовок блока Информация
    Далее выводятся статьи, созданные через Каталог – Статьи
    <ul>
    <?php foreach ($informations as $information) { ?>
    <li><a href=”<?php echo $information['href']; ?>”><?php echo $information['title']; ?></a></li>
    <?php } ?>
    </ul>
    </div>
    <?php } ?>
    Выводится заголовок блока Служба поддержки
    <div class=”column”>
    <h3><?php echo $text_service; ?></h3>
    <ul>
    <li><a href=”<?php echo $contact; ?>”><?php echo $text_contact; ?></a></li> -выводится форма Связаться с нами
    <li><a href=”<?php echo $return; ?>”><?php echo $text_return; ?></a></li> – выводится форма Возврат товара
    <li><a href=”<?php echo $sitemap; ?>”><?php echo $text_sitemap; ?></a></li> – выводится Карта сайта
    </ul>
    </div>
    Следующим блоком выводится информация Дополнительно
    <div class=”column”>
    <h3><?php echo $text_extra; ?></h3> – заголовок Дополнительно
    <ul>
    <li><a href=”<?php echo $manufacturer; ?>”><?php echo $text_manufacturer; ?></a></li> Производители
    <li><a href=”<?php echo $voucher; ?>”><?php echo $text_voucher; ?></a></li> Форма подарочных сертификатов
    <li><a href=”<?php echo $affiliate; ?>”><?php echo $text_affiliate; ?></a></li> Форма подарочного сертификата
    <li><a href=”<?php echo $special; ?>”><?php echo $text_special; ?></a></li> Акции
    </ul>
    </div>
    Последний блок – Личный кабинет
    <div class=”column”>
    <h3><?php echo $text_account; ?></h3> Заголовок
    <ul>
    <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 $wishlist; ?>”><?php echo $text_wishlist; ?></a></li> Закладки
    <li><a href=”<?php echo $newsletter; ?>”><?php echo $text_newsletter; ?></a></li> Рассылка
    </ul>

    При удалении любого из данных пунктов в нижней части сайта не будет отображаться та или иная информация.
    При удалении блока <div id=”powered”><?php echo $powered; ?></div> Работает на ocStore и название магазина в футере.
    Но при удалении данного пункта вы увидите следующую надпись OpenCart is open source software and you are free to remove
    the powered by OpenCart if you want, but its generally accepted practise to make a small donation.
    Please donate via PayPal to [email protected]с предложением
    перевести немного денюжек на развитие проекта Opencart, но что называется дело Ваше))

    --- Добавлено, 26 янв 2015 ---
    Как можно отредактировать верхнюю часть стандартной темы Opencart.

    За вывод верхней части в стандартной теме Opencart отвечает файл
    catalog\view\theme\default\template\common\header.tpl
    в нем соотвественно есть следующие блоки, отвечающие за вывод
    1)блок Войти или зарегистрироваться <div id=”welcome”>…</div>
    2)блок Главная,Закладки, Корзина покупок, Оформление заказа
    <div class=”links”>
    <a href=”<?php echo $home; ?>”><?php echo $text_home; ?></a> -Главная
    <a href=”<?php echo $wishlist; ?>” id=”wishlist-total”><?php echo $text_wishlist; ?></a> -Закладки
    <a href=”<?php echo $shopping_cart; ?>”><?php echo $text_shopping_cart; ?></a> – Корзина покупок
    <a href=”<?php echo $checkout; ?>”><?php echo $text_checkout; ?></a> – Оформление покупок
    </div>
    3)Блок Корзина
    <?php echo $cart; ?>
    4)Блок Язык
    <?php echo $language; ?>
    5)Блок Валюта
    <?php echo $currency; ?>
    6)Блок Поиск
    <div id=”search”>
    <div class=”button-search”></div>
    <input type=”text” name=”search” placeholder=”<?php echo $text_search; ?>” value=”<?php echo $search; ?>” />
    </div>

    Таким образом вырезав один из данных блоков мы можем скрыть его из нашего магазина.

     
  13. MShekhovtsev

    MShekhovtsev

    Регистрация:
    19 ноя 2013
    Сообщения:
    23
    Симпатии:
    9
    Асинхронная загрузка javascript

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

    1. В файле catalog/view/theme/*/template/header.tpl удаляем все подключаемые скрипты.
    2. В файле catalog/controller/common/header.php удаляем строку $data['scripts'] = $this->document->getScripts();
    3. В файле catalog/controller/common/footer.php добавляем строку $data['scripts'] = $this->document->getScripts();
    4. В файле system/library/response.php перед echo $output; добавляем:

    $parts = explode('<script type="text/javascript"><!--', $output);
    $output = $parts[0];
    $script = '';
    unset($parts[0]);
    foreach ($parts as $i => $value) {
    $parts = explode('--></script>', $value);
    $script .= $parts[0];
    $output .= $parts[1];
    }
    $output = str_replace("var user_script = ''", "var user_script = '".str_replace(array("\r", "\n"), '\n\'+\'',addslashes($script))."'",$output);
    5. В файле catalog/view/theme/*/template/footer.tpl добавляем перед закрывающим тэгом </body> строку:

    <script>
    if (window.addEventListener) {
    window.addEventListener("load", getAsync(), false);
    } else if (window.attachEvent) {
    window.attachEvent("onload", getAsync());
    } else {
    window.onload = getAsync();
    }
    function getAsync() {
    var scripts = [
    'catalog/view/javascript/bootstrap/js/bootstrap.min.js', //Здесь список скриптов, которые были подключены в шапке сайта
    'catalog/view/javascript/common.js' // замените на свои
    <?php foreach ($scripts as $script) { ?>
    ,'<?php echo $script; ?>'
    <?php } ?>
    ];

    var script = document.createElement("script");
    script.src = 'catalog/view/javascript/jquery/jquery-2.1.1.min.js'; // Подключение jQuery. Задайте свой путь к плагину jQuery
    script.onload = function(){
    var n = 0;
    $.each(scripts,function(i,script){
    $.getScript(script,function(){
    n++;
    if(n == scripts.length){
    var user_script = '';
    var script = document.createElement("script");
    script.text = user_script;
    document.body.appendChild(script);
    }
    });

    });
    };
    document.body.appendChild(script);

    }
    </script>​

    Принцип работы:


    1. Сначала загружается jQuery.
    2. После загрузки jQuery загружаются все остальные скрипты асинхронно.
    3. В файле response.php отделяются скрипты, которые содержатся внутри шаблонов.
    4. После загрузки всех скриптов загружаются отделенные выше скрипты.

    Спасибо за внимание
    --- Добавлено, 8 фев 2015 ---
    Асинхронная загрузка изображений

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

    Для этого у всех изображений, которые вы хотите загружать асинхронно, поменяйте атрибут src на realsrc и добавьте js файлик:

    function inWindow(s){
    var scrollTop = $(window).scrollTop();
    var windowHeight = $(window).height();
    var currentEls = $(s);
    var result = [];
    currentEls.each(function(){
    var el = $(this);
    var offset = el.offset();
    if(scrollTop <= offset.top && (el.height() + offset.top) < (scrollTop + windowHeight))
    result.push(this);
    });
    return $(result);
    }
    $(document).ready(function(){
    var images = inWindow("img");
    $(images).each(function(){
    if($(this).attr("realsrc")) {
    $(this).attr("src",$(this).attr("realsrc")).removeAttr("realsrc");
    }
    });
    $(window).scroll(function(){
    var images = inWindow("img");
    $(images).each(function(){
    if($(this).attr("realsrc")) {
    $(this).attr("src",$(this).attr("realsrc")).removeAttr("realsrc");
    }
    });
    });
    });

    Для асинхронной загрузки изображений в ajax-генерированном контенте нужно добавить :

    $(document).ajaxStop(function(){
    var images = inWindow("img");
    $(images).each(function(){
    if($(this).attr("realsrc")) {
    $(this).attr("src",$(this).attr("realsrc")).removeAttr("realsrc");
    }
    });
    $(window).scroll(function(){
    var images = inWindow("img");
    $(images).each(function(){
    if($(this).attr("realsrc")) {
    $(this).attr("src",$(this).attr("realsrc")).removeAttr("realsrc");
    }
    });
    });​
    });
     
    samuel_L, keo, Podmasteri и ещё 1-му нравится это.
  14. Fiable

    Fiable

    Регистрация:
    16 авг 2014
    Сообщения:
    172
    Симпатии:
    114
    Идеш в каталог
    catalog/view/theme/default/template/common/footer.tpl

    В низу строка <div id="powered"><?php echo $powered; ?></div> удали ее.
     
  15. buldozer

    buldozer

    Регистрация:
    7 окт 2012
    Сообщения:
    107
    Симпатии:
    44
    На офф. сайте Opencart присутствуют платные шаблоны цены от 19 - 45$. Так вот если открыть демку этого шаблона, потом посмотреть код страницы, и открыть ссылочку в которой присутствует путь к файлу stylesheet.css, а потом скопировать в наш stylesheet.css то получается этот платный шаблон, но бесплатно.
    З.Ы.(не для всех шаблонов это прокатывает) Проверял на Opencart 2.0.1.1, но вероятно это должно работать и в младших версиях...
    Если не прав поправьте.
     
    halfhope нравится это.
  16. Fiable

    Fiable

    Регистрация:
    16 авг 2014
    Сообщения:
    172
    Симпатии:
    114
    Дайте ссылку где смотреть

    http://www.opencart.com/index.php?r...tension_id=20701&path=1&filter_download_id=39

    Вот к примеру ссылка
     
    Последнее редактирование: 27 фев 2015
  17. buldozer

    buldozer

    Регистрация:
    7 окт 2012
    Сообщения:
    107
    Симпатии:
    44
    берешь устанавливаешь чистый Opencart (я установил с опенкарт россия) и дальше баловался путем изменения в stylesheet.css

    не забываем если в чем то помог то ------------------------------------------------------------------------------>>>
     
    dem03x нравится это.
  18. razzer

    razzer

    Регистрация:
    26 дек 2012
    Сообщения:
    57
    Симпатии:
    17
    Установка мета тега Keywords для главной страницы через админку
    Делается по аналогии с метатегом description. Выносим в админку дополнительное поле для ключевиков, как это сделано для description.

    1. admin/controller/setting/setting.php (47 строка)


    и 338 строка


    2. admin/language/russian/setting/setting.php (строка 25)


    3. admin/view/template/setting/setting.php (75 строка)


    4. catalog/controller/common/home.php (c 3 строки)


    После этих махинаций у вас в настройках магазина появится поле keywords сразу после поля description
     
  19. Ping

    Ping PingWin always win

    Регистрация:
    29 окт 2012
    Сообщения:
    445
    Симпатии:
    302
    А можно поинтересоваться зачем ???? Поисковики не индексируют keywords уже очень давно.
     
  20. chukcha

    chukcha

    Регистрация:
    9 окт 2014
    Сообщения:
    448
    Симпатии:
    119
    А вот например....
    Можно использовать как "скрытое поле тегов" и искать по содержимому в кейвордсе.
    Т.е. теги как таковые иммеб ссылку, а keywords - нет. И неизвестно как в будущем будут вести себя ПС, кроме того можно найти и какое-нибудь другое применение тега.
    В любом случае - не помешает.