[FAQ] Настройки, оптимизации, фичи, статьи для OpenCart

Тема в разделе "OpenCart", создана пользователем VeroN, 23 дек 2012.

  1. VeroN

    VeroN

    Регистрация:
    26 ноя 2012
    Сообщения:
    82
    Симпатии:
    316
    « Правила раздела »
    1. Обсуждения - запрещены! Здесь размещаются только "готовые решения".
    2. Если хотите отблагодарить автора поста, то используем кнопку «Мне нравится». Создавать для этого новые сообщения не нужно!
    3. Размещать ссылки на сторонние ресурсы - запрещено.
    4. Если у вас возникли вопросы по одному из сообщений и вы считаете, что оно требует доработки или прочих изменений, то свяжитесь с автором поста для редактирования информации или сообщите одному из модераторов раздела для внесения изменений при помощи личных сообщений или кнопки "Пожаловаться".
    Правила оформления сообщения
    1. Название - для удобного поиска.
    2. Использовать размер шрифта для заголовков не больше 5, для остального не меньше 3 (стандартный). Если используете другой "цвет" шрифта, то он должен быть адекватным и не содержать 'радуги' или 'ядовитый' оттенок, который при просмотре ломает глаза.
    3. Для кода используем соответствующие теги, если код длинный, то прячем под "спойлер".
    4. Свободная информация взятая из интернета под хайдом не устанавливается! Если это ваш личный метод, то хайд на ваше усмотрение.
    Пример:
    « Меняем иконку для сайта »

    По умолчанию стандартная иконка имеет вид корзины для покупок. Рисуем свою иконку (16х16 px), сохраняем ее как "favicon.ico" и загружаем в корень сайта. Открываем файл "header.tpl" (путь: catalog\view\theme\default\template\common) и добавляем строчку:
    Код:
    <link rel="shortcut icon" href="/favicon.ico">
    - - -
    С уважением,
    Администрация форума
     
    rrrrsrer79, hisbvdis, Zelveger и 3 другим нравится это.
  2. femmill

    femmill

    Регистрация:
    5 фев 2014
    Сообщения:
    42
    Симпатии:
    14
    На счет полета в корзину. Нашел решения и для категори и для продуктов и для всего..
    http://opencartforum.ru/topic/5001-besplatno-dobavit-v-korzinu/page-2#entry59842
    После прописания скрипта в catalog\view\javascript\common.js - нужно просто заменить код вывода картинки для всех модулей,страниц где нужна такая фича.
     
  3. dimva

    dimva

    Регистрация:
    8 дек 2012
    Сообщения:
    30
    Симпатии:
    16
    Измеряем время обработки кода на странице
    В начале файла index.php прописываем
    Код:
    $sysstart = microtime(true);
    и в конце
    Код:
    echo  '<!--time_gen- '.round(( microtime(true) - $sysstart), 5). 's -/time_gen-->';
    Теперь при обновлении страницы магазина в конце кода можно посмотреть время обработки кода на странице.
    У меня получились печальные цифры
    <!--time_gen- 2.59473s -/time_gen-->
    --- Добавлено, 28 фев 2014 ---
    Ускоряем обработку кода на странице
    Мне очень помогло отрубить подсчет количества товаров в категориях. Для этого в файле catalog/controller/common/header.php заменяем
    Код:
                        $product_total = $this->model_catalog_product->getTotalProducts($data);
                                       
                        $children_data[] = array(
                            'name'  => $child['name'] . ' (' . $product_total . ')',
    на
    Код:
                        //$product_total = $this->model_catalog_product->getTotalProducts($data);
                                       
                        $children_data[] = array(
                            'name'  => $child['name'],
    и в файле catalog/controllre/module/category.php заменяем
    Код:
                    $product_total = $this->model_catalog_product->getTotalProducts($data);
                               
                    $children_data[] = array(
                        'category_id' => $child['category_id'],
                        'name'        => $child['name'] . ' (' . $product_total . ')',
    на
    Код:
                    //$product_total = $this->model_catalog_product->getTotalProducts($data);
                               
                    $children_data[] = array(
                        'category_id' => $child['category_id'],
                        'name'        => $child['name'],
    и там же заменяем
    Код:
                $product_total = $this->model_catalog_product->getTotalProducts($data);
                           
                $this->data['categories'][] = array(
                    'category_id' => $category['category_id'],
                    'name'        => $category['name'] . ' (' . $product_total . ')',
    на
    Код:
                //$product_total = $this->model_catalog_product->getTotalProducts($data);
                           
                $this->data['categories'][] = array(
                    'category_id' => $category['category_id'],
                    'name'        => $category['name'] ,
    после этих манипуляций мой магазин стал просто летать. Время обработки кода на страницы сократилось с 2.59 сек до 0.33 сек
     
    Последнее редактирование: 28 фев 2014
    Hottabych23, autoshop, NinoZombie и 3 другим нравится это.
  4. Opss31

    Opss31

    Регистрация:
    10 дек 2012
    Сообщения:
    14
    Симпатии:
    2
    Измеряем время обработки кода на странице:
    В начале файла index.php прописываем
    - это фаил в корне? Напишите путь пожалуйста.
    Спасибо.
     
  5. halfhope

    halfhope

    Регистрация:
    31 дек 2012
    Сообщения:
    284
    Симпатии:
    309
    Подсветка активных модулей в списке.

    В файле "admin/view/template/extension/module.tpl" найти
    Код:
    <?php foreach ($extensions as $extension) { ?>
    <tr>
    
    и заменить его на
    Код:
    <style>.list tbody td {background:none;}</style>
    <?php foreach ($extensions as $extension) { ?>
              <tr<?php echo (count($extension['action']) >= 2)?' style="background:#f4ffed !important;border-left: 5px solid #b1db95 !important; border-right: 5px solid #b1db95 !important;"':''; ?>>
    
     
    Последнее редактирование: 26 май 2014
    anskachkov, HPlus, Ping и 5 другим нравится это.
  6. dimva

    dimva

    Регистрация:
    8 дек 2012
    Сообщения:
    30
    Симпатии:
    16
    Да, этот фаил в корне. То есть путь /index.php
     
  7. panasys

    panasys

    Регистрация:
    14 май 2013
    Сообщения:
    83
    Симпатии:
    32
    Обновление ocStore 1.5.x.x на 1.5.5.1.2
    -------

    ШАГ 1. BACKUP: Сделайте копию существующих файлов магазина и базы данных!

    ШАГ 2. Загрузите все новые файлы поверх текущей установки КРОМЕ config.php и admin/config.php

    ШАГ 3. Откройте http://www.yourstore.com/shop/install (папку install в корне магазина)

    ШАГ 4. Установщик должен направить Вас к процессу обновления. Если вы видите шаги установки, значит Вы переписали ваши файлы конфигурации (config). Восстановите их, так как обновление нуждается в существующих config.php и admin/config.php файлах.

    ШАГ 5. Нажмите кнопку "Обновить". Через несколько секунд вы должны увидеть страницу успешного обновления. Выполните следующие действия, следуя инструции

    ШАГ 6. Сообщите о любой ошибке обновления на форуме.

    ШАГ 7. Удалите все cookies в своем браузере, чтобы избежать ошибок.

    Шаг 8. Загрузите страницу администрирования и нажмите клавиши CTRL+F5 два раза, чтобы браузер обновил изменения CSS.

    Шаг 9. Перейдите в Система-> Пользователи-> Группы пользователей и отредактируйте группу Главный администратор. Проверьте все галочки.

    ШАГ 10. Отредактируйте основные параметры системы. Обновите все поля и нажмите кнопку сохранить, даже если ничего не изменилось.

    ШАГ 11. Загрузите витрину магазина и нажмите клавиши CTRL + F5 два раза, чтобы браузер обновил изменения CSS.
     
  8. rlnk

    rlnk

    Регистрация:
    22 янв 2014
    Сообщения:
    1
    Симпатии:
    0

    подскажите плз куда добавлять этот код? и пожойдет-ли он для ocstore 1.5.5.1?
     
  9. AlexI

    AlexI

    Регистрация:
    14 май 2013
    Сообщения:
    36
    Симпатии:
    12
    там же всё вроде написано.
    файл product.php
    находишь строку:
    Код:
    setTitle($product_info['name'])
    меняешь на:
    Код:
    setTitle(((isset($category_info['name']))?($category_info['name'].' : '):'').$product_info['name'])
     
  10. panasys

    panasys

    Регистрация:
    14 май 2013
    Сообщения:
    83
    Симпатии:
    32
    Кому не нравится в OCSTORE 1.5.5.1.2 сортировка при добавлении товара в разделе "Связи" можно вернуть к виду как было в 1.5.5.1.1 все (категории отображались по порядку) Для этого в в файле \admin\model\catalog\category.php ищем строку:
    $sql .=" GROUP BY cp.category_id ORDER BY c.sort_order, name";
    и и замените ее на:
    $sql .=" GROUP BY cp.category_id ORDER BY name";
     
    Podmasteri и Alexx00 нравится это.
  11. jaroslav1984

    jaroslav1984

    Регистрация:
    25 сен 2013
    Сообщения:
    2
    Симпатии:
    0
    у меня была ошибка Notice: Undefined variable: mpn in /home/***/public_html/catalog/view/theme/gazal/template/product/product.tpl on line 62
    пока не добавил
    catalog/controller/product/product.php.
    после строчки
    $this->data['points'] = $product_info['points'];
    дописал свои переменные
    $this->data['mpn'] = $product_info['mpn'];
    $this->data['upc'] = $product_info['upc'];
    $this->data['isbn'] = $product_info['isbn'];
    $this->data['jan'] = $product_info['jan'];
     
    Последнее редактирование: 5 апр 2014
  12. zamalatb

    zamalatb

    Регистрация:
    29 апр 2014
    Сообщения:
    113
    Симпатии:
    32
    Оптимизируем \catalog\view\theme\*\stylesheet\stylesheet.css
    Обязательно сделайте копию файла, если вдруг посыпятся ошибки или работать будет не так как нужно.
    копируем весь текст с файла и вставляем в поле вверху на сайте: http://www.cy-pr.com/tools/css/
    нажимаем оптимизация, после внизу копируем все и вставляем в наш файл. Сохраняем, и радуемся еще быстрой загрузке нашего сайта)
    Лично у меня файл ужался на 28 процентов.
    Также можно поиграться настройками справа и добиться еще большой степени сжатия.
     
    Dema, Ecstasea, Дмитрич и 2 другим нравится это.
  13. mstkalenko

    mstkalenko

    Регистрация:
    5 янв 2013
    Сообщения:
    8
    Симпатии:
    44
    Настройка фильтрации CKEditor
    Делаем так чтобы CKEditor не затирал код скриптов.
    В файл config.js дабавить:

    Код:
    CKEDITOR.config.indentClasses = ["ul-grey", "ul-red", "text-red", "ul-content-red", "circle", "style-none", "decimal", "paragraph-portfolio-top", "ul-portfolio-top", "url-portfolio-top", "text-grey"];
        CKEDITOR.config.protectedSource.push(/<(style)[^>]*>.*<\/style>/ig);// разрешить теги <style>
        CKEDITOR.config.protectedSource.push(/<(script)[^>]*>.*<\/script>/ig);// разрешить теги <script>
        CKEDITOR.config.protectedSource.push(/<\?[\s\S]*?\?>/g);// разрешить php-код
        CKEDITOR.config.protectedSource.push(/<!--dev-->[\s\S]*<!--\/dev-->/g);
        CKEDITOR.config.allowedContent = true; /* все теги */[code]
     
    ART994, NinoZombie, x-guest и ещё 1-му нравится это.
  14. siriusdesign

    siriusdesign

    Регистрация:
    4 май 2014
    Сообщения:
    10
    Симпатии:
    2
    а если ваш метод не помог ?
    в админке даже перменовал файл и в папке, не помогло
     
  15. Дмитрий Днепр

    Дмитрий Днепр

    Регистрация:
    2 июн 2014
    Сообщения:
    68
    Симпатии:
    12
    Можно поточнее указать место (путь) где лежит файл product.php
     
  16. five555

    five555

    Регистрация:
    18 янв 2014
    Сообщения:
    248
    Симпатии:
    149
    /catalog/controller/product/product.php
     
    Дмитрий Днепр нравится это.
  17. Дмитрий Днепр

    Дмитрий Днепр

    Регистрация:
    2 июн 2014
    Сообщения:
    68
    Симпатии:
    12
    Найти нашел, код поменял. Но не работает может я что то не так делаю 1.5.4.1
     
  18. NinoZombie

    NinoZombie

    Регистрация:
    27 окт 2013
    Сообщения:
    223
    Симпатии:
    61
    Чуть сердечный приступ не хватил, когда переставали внезапно работать кнопки, работающие с ajax . В том числе очень важные, отвечающие за выбор опции OpenStock.
    Трижды пришлось восстанавливать бекап сайта, и трижды я никак не мог понять с какого момента кнопки перестают работать... Даже вирус какой-то на сайте нашел eval(base_64 ... А оказалось все просто - отказывают после установки счетчика обработки времени, посоветованного Вами.
    Объясните, пожалуйста, как эти строчки
    Код:
    $sysstart = microtime(true);
    echo '<!--time_gen- '.round(( microtime(true) - $sysstart), 5). 's -/time_gen-->';
    влияют на работу аякса?
     
    Последнее редактирование: 22 июн 2014
  19. дучгы663

    дучгы663

    Регистрация:
    13 янв 2014
    Сообщения:
    7
    Симпатии:
    0
    Подскажите,в чем может быть причина.Перестал выпадать список регионов при оформлении заказа.Видимо произошло после установки очередного модуля.Бэкап к сожалению забыл сделать.Что надо подправить?Спасибо.[​IMG]
     
  20. Alexx00

    Alexx00

    Регистрация:
    24 апр 2013
    Сообщения:
    66
    Симпатии:
    29
    Я конечно нюансы не объясню:smile:, но после данного кода у меня тоже всё заглохло. Сделала проще, ошибок нет, но насколько, и в зависимости от чего именно, можно верить получаемым цифрам - я донт андестенд...Да не так элегантно, как хотелось бы, но - работает...
    В начало кода index.php после <?php:
    Код:
    if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
      define('START_TIME', microtime(true));
    }
    
    В конце, до закрываемого ?>
    Код:
    if (defined('START_TIME')) {
            echo "\n<!-- Execution Time: ", sprintf("%.6f", abs(microtime(true) - START_TIME)), " sec -->";
    }
    
     
  21. alex_storm

    alex_storm webdev

    Регистрация:
    11 дек 2012
    Сообщения:
    1.151
    Симпатии:
    667
    Blog manager pro - транслетирация урла.
    Дорогие форумчане, если у Вас русская версия opencart и при попытке ввода киррилицу не трансформируется урл, в файлах:
    admin/view/template/blog/article_form.tpl
    admin/view/template/blog/category_form.tpl
    замените кодировку с ANSI на UTF-8 (без BOM)

    Далее в файлах найдите кусок кода
    Код:
    от
    var keyword = $("input[name=keyword]");
    до
       // return SEO url;
       keyword.val(seoUrl + endUrl);     
    });
    И замените его на вот этот:
    Код:
    function translit(){
        // Символ, на который будут заменяться все спецсимволы
        var space = '-';
        // Берем значение из нужного поля и переводим в нижний регистр
        var text = $('#name').val().toLowerCase();
        //var text = document.getElementById('name').value.toLowerCase();   
        // Массив для транслитерации
        var transl = {
                        'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'e', 'ж': 'zh', 'з': 'z', 'и': 'i',
                        'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't',
                        'у': 'u', 'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': space, 'ы': 'y',
                        'ь': space, 'э': 'e', 'ю': 'yu', 'я': 'ya',
                       
                        ' ': space, '_': space, '`': space, '~': space, '!': space, '@': space, '#': space, '$': space,
                        '%': space, '^': space, '&': space, '*': space, '(': space, ')': space, '-': space, '\=': space,
                        '+': space, '[': space, ']': space, '\\': space, '|': space, '/': space, '.': space, ',': space,
                        '{': space, '}': space, '\'': space, '"': space, ';': space, ':': space, '?': space, '<': space,
                        '>': space, '№': space                   
                     }
       
        var result = '';
       
        var curent_sim = '';
       
        for(i=0; i < text.length; i++) {
            // Если символ найден в массиве то меняем его
            if(transl[text[i]] != undefined) {           
                if(curent_sim != transl[text[i]] || curent_sim != space){
                    result += transl[text[i]];
                    curent_sim = transl[text[i]];               
                }                   
            }
            // Если нет, то оставляем так как есть
            else {
                result += text[i];
                curent_sim = text[i];
            }       
        }   
       
        result = TrimStr(result);   
       
        // Выводим результат
        $('#keywords').val(result);
        //document.getElementById('alias').value = result;
       
    }
    function TrimStr(s) {
        s = s.replace(/^-/, '');
        return s.replace(/-$/, '');
    }
    
    // Выполняем транслитерацию при вводе текста в поле
    $(function(){
        $('#name').keyup(function(){
            translit();
            return false;
        });
    });
    В том же файле найдите <input type="text" name="article_description[<?php echo $language['language_id']; ?>][title]" size="100" value="<?php echo isset($article_description[$language['language_id']]) ? $article_description[$language['language_id']]['title'] : ''; ?>" />

    Замените на <input type="text" id="name" name="article_description[<?php echo $language['language_id']; ?>][title]" size="100" value="<?php echo isset($article_description[$language['language_id']]) ? $article_description[$language['language_id']]['title'] : ''; ?>" />

    И в том же файле найдите <input type="text" name="keyword" value="<?php echo $keyword; ?>" />
    Замените на <input type="text" name="keyword" id="keywords" value="<?php echo $keyword; ?>" />

    P.S. Кодировку лучше поменять во всех файлах данного модуля.

    Ссылка на модуль:
     
    Последнее редактирование: 8 июл 2014
    x-guest, Pelmen, buldozer и ещё 1-му нравится это.