+0 000-000-00-00

Opencart 1.5.6.4 - доработки

07/2018. Исправлена сортировка по умолчанию. Добавлен мод, добавляющий поле редактирования даты добавления товара в магазин в админке. Сортировка по умолчанию в /catalog/controller/product/category.php изменена на p.date_added

См.инструкцию здесь: #16

Для справки: можно делать и сортировку по наличию, но я так не делал #33

Установленные дополнения

  1. Batch Editor 0.2.3
  2. Export-Import opencart-1-5-1-to-1-5-6-x-export-import-multilingual-2-26.zip
  3. добавление размеров и веса товара в характеристики товара

  4. Обновление цены при выборе опции, без AJAX (vqmod) v1.5.x При добавлении этого мода сбивалось округление. Решение здесь
    upd. Мод перестал работать почему-то. Заменил на этот Live Price Update with Options+ Distribution
  5. Auto-related-products
  6. Кнопка для заказа обратного звонка sources-1_2_rus.zip
  7. fix_image_subdomain.xml - загрузка изображений с другого домена или поддомена. Подробнее.. vqmod фикса берем отсюда
  8. Wholesale Price List- потребовал "допиливания". Инструкции здесь, там же перевод
    pricelist.tpl - убрал вывод колонки с рейтингом, уменьшил размер выводимого изображения (строка 159)
    pricelist_print.tpl - убрал последнюю колонку и уменьшил размер изображений
    Поле количества для заказа - да и все другие поля ввода - по умолчанию слишком широкие. Задал стили для этих полей с меньшей шириной в конце stylesheet.css шаблона.
    .pricelist .tright > input {  width: 30px;}

    pricelist.php - уменьшил количество слов в описании. Строка 351. Строка 3 - количество товаров в dropdown для вывода на странице.
  9. Расширенный ckeditor
  10. Выбор желаемой даты и времени доставки при заказе. Та же проблема с шириной полей ввода, слишком широкие. Добавил в стили
    .fright select {  width: 80px;}
    .delivery-date  {  width: 80px;}
     
  11. Установил модуль Export-Import. На денвере было все нормально, на хостинге появилась ошибка Could not close zip file php://output.

Решение здесь Export/Import Tool for OpenCart 1.5.5.x - Could not close zip file php://output

Нужно было прописать временную директорию на сервере - она отличалась от "умолчальной". В моем случае путь /var/www/ username/data/mod-tmp

2. Модуль "Валюта плюс" нашел версии 2.6. Модуль работает, но требует установки по умолчанию валюты в рублях. Работает своеобразно. При изменении базовой цены нужно на вкладке валют "обновить цены". После этого по курсу вычисляет цену в валюте по умолчанию с округлением. Т.к. у меня импортируются цены в USD, то снес его.

3. Для добавления пункта меню Batch Editor нужно в файле admin\view\template\common\header.tpl ... блин, код эта cms не вставляет. Короче, сделать, как написано здесь.

4.Округление цен - ссылка 1, 2, 3
Сделал округление до 5 (можно кратно любой цифре так делать)

 
1
$string .= number_format(round($value/5, 0)*5,(int)$decimal_place, $decimal_point, $thousand_point);

Округление цены купона(чтобы не страдала математика).

 

Шаблон Kitchenware

Исправление ошибок

1. об отсутствии в мобильной версии ссылок в меню на блог

в общем в header.tpl добавить перед закрывающими свой линк на блог

Строка 280 добавляется   

 

2. когда входишь в мобильной версии на него и выбираешь конкретную статью, то ее не видно, это, соответственно, в responsive.css почему-то display:none стоял.

строка 188
.tabs .tab-content {
    display:block;
    }

3. при оставлении отзыва не выводится сообщение success, а ошибочные выводятся

в файле \catalog\view\theme\kitchen\template\product\product.tpl

строка примерно 714 заменить 

    //            $('#review-title').after('

' + data['success'] + '

');
    $('#review-title').after('

' + data.success + '

');   

4. Позиционирование логотипа изменением стиля в \catalog\view\theme\kitchen\stylesheet\stylesheet.css

header #logo {
    float:left;
    margin: -30px0px 0px 0px;
    }

5. В шаблоне нет кнопки "редактировать товар" для залогиненного администратора. Чтобы ее вставить нужно в catalog\view\theme\kitchen\template\product\product.tpl добавить

 

Код:
    $this->registry->set('user', new User($this->registry));
  if ($this->user->isLogged()) { $userLogged = true; } else { $userLogged = false;} if ($userLogged) { ?>    

 

6. Делаем один язык в opencart или убираем английский

 

Opencart 1.5.x
1) Самый простой способ, если вы хотите сделать магазин только на русском — просто удалить английский язык через админку opencarta : Система — Локализация — Языки. Но иногда такой способ не проходит — потому, что английский это fallback language то есть системный язык для некоторых шаблонов, например shoppica 2. Поэтому при его удалении может выдать кучу ошибок.

2) Если стоит задача оставить только один язык на сайте, но не удалять английский , то при добавлении товара название товара все равно приходится заполнять для английской вкладки — такова логика работы самого opencart’a . Сами разработчики насчёт этой проблемы высказываются в духе «это не баг, а фича» или кому надо тот найдет решение. Решение представляется таким: сделать поле название товара для английской вкладки необязательным.
Для этого комментируем в  \admin\controller\catalog\product.php

Код:
/*foreach ($this->request->post['product_description'] as $language_id => $value) {
if ((utf8_strlen($value['name']) < 1) || (utf8_strlen($value['name']) > 255)) {
$this->error['name'][$language_id] = $this->language->get('error_name');
}
}*/

В итоге имеем один язык на сайте.

7. Горизонтальный скролл в списке товаров в админке

Почему-то естьтолько вертикальный. Лечится добавлением в /admin/view/stylesheet/stylesheet.css в класс .box content параметра overflow: visible;

 

8. Автопрокрутка  карусели производителей

Находим файл: catalog/view/theme/yourtheme/template/module/carousel.tpl

После строки:

vertical:false,

Добавляем строки:

auto:3,

wrap:'circular',

Цифра 3 — означает через сколько секунд будет производиться автоматическая прокрутка модуля.

 

9. В форме "связаться с нами" ошибка карты. Исправление Файлы для исправления здесь

10. Убрать в форме ответа на заказ фразу Powered by:

В файле /catalog/view/theme/default/template/mail/order.tpl закомментировать строку 114

11. Исправление пропадания основного изображения в мобильной версии

12. Изменение размеров шрифта и расстояний в полоске главного меню

13. Добавление внешних ссылок в это меню. Правим файл header.tpl

Я внес правки в файл own_external_multi_links_in_header.xml

Туда же добавил исправление 11.

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

15. Количество товаров в всплывающей корзине а в модуле корзины что в шапке показывает только последних два товара. Ограничение можно поменятьв /catalog/view/theme/kitchen/template/module/cart.tpl строка 29

16. Для уменьшения размера картинок в блоках "лидеры продаж" и "Вы смотрели" недостаточно уменьшить размер в админке. Нужно еще изменить стили. Для вывода используется общий стиль span3 в bootstrap.css, поэтому нужно его дублировать и переименовать. Я сделал span31.

Вызывается этот стиль хитро, через переменную $spanLine примерно такой строкой

  • span"

Поэтому нужно изменить эту переменную с "3" на "31" в файлах bestseller.tpl и viewed.tpl в папке ../template/module/. Если нужно менять стиль вывода в других местах, то можно подправить, например latest.tpl, featured.tpl и др.

16. В логах есть много ошибок по вызову несуществующих файлов. Вот некоторые советы по их фиксам.

  •  /catalog/view/theme/kitchen/js/fancybox/jquery.fancybox-1.3.4-iefix.js

нужно удалить вызов в header.tpl

/catalog/controller/myoc/pricelist.php - нужно закомментировать вызов стилей в строках 40-44

 

Сортировка по наличию

по совету отсюда

Я сделал это в модели. Мне надо что бы товары которых нет в наличии были внизу списка при любой сортировке.

  

catalog\model\catalog\product.php  (187 line для OpenCart 1.5.6.1)

     if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
     if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
     $sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
     } elseif ($data['sort'] == 'p.price') {
     $sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
     } else {
     $sql .= " ORDER BY " . $data['sort'];
     }
     } else {
     $sql .= " ORDER BY p.sort_order";
     }

меняем на

    if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
     if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
     $sql .= " ORDER BY (p.quantity>0) DESC, LCASE(" . $data['sort'] . ")";
     } elseif ($data['sort'] == 'p.price') {
     $sql .= " ORDER BY (p.quantity>0) DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
     } else {
     $sql .= " ORDER BY (p.quantity>0) DESC," . $data['sort'];
     }
     } else {
     $sql .= " ORDER BY (p.quantity>0) DESC, p.sort_order";
     }

Так же я решил вообще не показывать в похожих продуты, которых нет в наличии. Для этого в функции getProductRelated добавляем условие: p.quantity > 0

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

  

P.S. Не знаю насколько это решение правильное и красивое, но работает.
не работает....

 

    Опубликовано

    Menu