Автор Тема: Картинки товаров в результатах быстрого поиска в Prestashop 1.5.5.0  (Прочитано 2591 раз)

31 Августа 2013, 03:09:06
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я использовал следующий хак в файле blocksearch-instantsearch.tpl в Prestashop 1.5.4.1 для показа картинок товаров в выпадающем списке быстрого поиска товаров (75 строка):

Заменил:

return value;
на

return "<img src=\"" + baseDir + "img/tmp/" + "product_mini_" + data.id_product + ".jpg\" alt=\"" + value + "\" />  " + value;
Все работало отлично.

Поставил Prestashop 1.5.5.0. В нем этот хак не работает.

Я заметил, что нумерация картинок product_mini из папки \img\tmp\ изменила свой формат в Prestashop 1.5.5.0.

В Prestashop 1.5.4.1 файлы нумеровались так:

product_mini_1.jpg
product_mini_2.jpg
product_mini_3.jpg

и т.д.


В Prestashop 1.5.5.0 нумерация стала такая:

product_mini_1_1.jpg
product_mini_2_1.jpg
product_mini_3_1.jpg

и т.д.

Что за  _1 в конце имен файлов?

Как изменить этот хак, чтобы изображения товаров показывались в результатах быстрого поиска в Prestashop 1.5.5.0?

31 Августа 2013, 14:14:39
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86050
  • Репутация: +25403/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В prestashop 1.5 можно использовать старую систему сохранения изображений.
В админке там где изображения можно установить какую систему хранения использовать.
01 Сентября 2013, 14:47:20
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В prestashop 1.5 можно использовать старую систему сохранения изображений.
В админке там где изображения можно установить какую систему хранения использовать.

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

Более того, в 1.5.3.1 еще был пункт в меню "Изображения": Переместить изображения в новую систему хранения. А в 1.5.4.1 и в и1.5.5.0 этого пункта уже нет вообще (по крайней мере, ЕСЛИ МАГАЗИН УСТАНОВЛЕН С НУЛЯ). Т.е., получается, что храниться теперь все будет в новой системе только.

А в 1.5.5.0 к изображениям product_mini_ стала добавляться по сравнению с 1.5.4.1 еще одна цифра. И никак не пойму - это ID магазина добавляется или еще какой-то ID?

И как скорректировать приведенный выше код, чтобы все снова заработало? Прошу помощи!
02 Сентября 2013, 09:13:21
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 32995
  • Репутация: +26759/-0
    • Просмотр профиля
02 Сентября 2013, 14:24:12
Ответ #4
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добавили ид категории.

Подскажите, пожалуйста, как должен теперь выглядеть этот код?


Я исправил код на:

<img src=\"" + baseDir + "img/tmp/" + "product_mini_" + data.id_product + "_" + data.id_category + ".jpg\" alt=\"" + value + "\" />

Но у меня не заработало. Может все же это не ID категории? Я проверил изображения товаров в product_mini_ у всех у них в конце стоит _1. А относятся они к категориям с разными ID.
02 Сентября 2013, 15:44:43
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 20842
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
\img\tmp\product_mini_
Миниатуры создаются при просмотре списка товаров в админке.
Должны использоваться только в адмике.
Для изображений, которые нужно показывать посетителям, нужно создать новый формат.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
02 Сентября 2013, 21:50:56
Ответ #6
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
\img\tmp\product_mini_
Миниатуры создаются при просмотре списка товаров в админке.
Должны использоваться только в адмике.
Для изображений, которые нужно показывать посетителям, нужно создать новый формат.

Вот в одном форуме нашел такой код для вставки в blockcart.tpl, чтобы в ajax корзине в выпадающем списке показывались изображения товаров вместе с их наименованием:

<span style="display: inline-block; float:left"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'small_default')}" alt=""></span>
Нельзя это как-то задействовать в приведенном в начале поста коде, чтобы изображения показывались в результатах быстрого поиска? В корзине они показываются нормально.
03 Сентября 2013, 11:20:29
Ответ #7
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22122
  • Репутация: +17109/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
{return value;}заменить на
{return "<img src=\"" + baseDir + "img/p/" + data.image.split('').join('/')+"/" + data.image+ "-small_default.jpg\" alt=\"" + value + "\" />" + value;}В класс Search.php заменить запрос (линия 260)
$sql = 'SELECT DISTINCT p.id_product, pl.name pname, cl.name cname,
          cl.link_rewrite crewrite, pl.link_rewrite prewrite '.$score.'
         FROM '._DB_PREFIX_.'product p
         INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON (
          p.`id_product` = pl.`id_product`
          AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').'
         )
         '.Shop::addSqlAssociation('product', 'p').'
         INNER JOIN `'._DB_PREFIX_.'category_lang` cl ON (
          product_shop.`id_category_default` = cl.`id_category`
          AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').'
         )
на
$sql = 'SELECT DISTINCT p.id_product id_product,p.reference preference,im.id_image image, pl.name pname, cl.name cname,
          cl.link_rewrite crewrite, pl.link_rewrite prewrite '.$score.'
         FROM '._DB_PREFIX_.'product p
         INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON (
          p.`id_product` = pl.`id_product`
          AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').'
         )
         '.Shop::addSqlAssociation('product', 'p').'
         INNER JOIN `'._DB_PREFIX_.'category_lang` cl ON (
          product_shop.`id_category_default` = cl.`id_category`
          AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').'
         )
          LEFT JOIN `'._DB_PREFIX_.'image` im ON  (p.`id_product` = im.`id_product`AND `cover` = 1)
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
03 Сентября 2013, 17:34:13
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо mAgency за быструю реакцию. Попробовал на 1.5.4.1 - все работает отлично. Но на 1.5.5.0 выдает пустые квадратики изображений. Вы на 1.5.5.0 пробовали?

Я сверил на всякий случай папки img\p\ в версиях Prestashop для нескольких товаров. Расположение и именование файлов одинаковое:

1-small_default.jpg
2-small_default.jpg

и т.д.

А вот файлы Search.php отличаются.


Прилагаю файл Search.php от версии 1.5.5.0. Может там что-то изменено уже разработчиками?




03 Сентября 2013, 20:57:24
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 32995
  • Репутация: +26759/-0
    • Просмотр профиля
return "<img src=\"{$link->getImageLink('" + data.prewrite + "', '" + data.image + "', 'размер картинки')}\" />" + value;
04 Сентября 2013, 03:22:26
Ответ #10
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
return "<img src=\"{$link->getImageLink('" + data.prewrite + "', '" + data.image + "', 'размер картинки')}\" />" + value;

Это вместе с кодом mAgency в Search.php использовать?

Подставил вместо "размер картинки" small_default. Проверил с изменениями в Search.php и без этих изменений под 1.5.5.0.

Не работает :( в обоих случаях.


Там JPG нигде не пропущен в коде?

Вы пробовали на 1.5.5.0?
04 Сентября 2013, 09:56:40
Ответ #11
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86050
  • Репутация: +25403/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Подставил вместо "размер картинки" small_default.
А такой размер есть? Отмечен применять для товаров?
Настройки > Изображения
В настройках стоит, что поиск по ajax?
04 Сентября 2013, 11:52:30
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 763
  • Репутация: +6/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В prestashop 1.5.5, если включен мультимагазин, getImageLink не правильно определяет адрес картинок.
Такое писали на форуме prestashop.com.
04 Сентября 2013, 14:20:38
Ответ #13
  • Фрилансер
  • *
  • Сообщений: 142
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Подставил вместо "размер картинки" small_default.
А такой размер есть? Отмечен применять для товаров?
Настройки > Изображения
В настройках стоит, что поиск по ajax?


В настройках все правильно прописано:
1. small_default 45x45 px для товаров ключен
2. ajax-корзина в модулях включена
3. мультимагазин выключен

В настройках стоит, что поиск по AJAX. Список найденных товаров вываливается, но вместо картинок квадратики с вопросом. Причем размер квадратиков соответствует home_default, хотя везде в кодах прописано small_default.

Если в 1.5.4.1 решение от mAпency  с изображениями small_default работает, а в 1.5.5.0 нет, значит уже близко :)

Решение от Coder у меня не заработало. Но мне путем тупого сравнения с предыдущими вариантами кодов, кажется, что там где-то JPG пропущено. Я не программист и не знаю, прав я или нет.
04 Сентября 2013, 15:58:44
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 882
  • Репутация: +206/-0
    • Просмотр профиля
Я тоже не программист, но посмотрел файлы, там $link->getImageLink везде без JPG.
У меня версия 1.5.4.1, я добавил в класс Search.php
Автор: mAgency
LEFT JOIN `'._DB_PREFIX_.'image` im ON  (p.`id_product` = im.`id_product`AND `cover` = 1)а в шаблон поиска blocksearch-instantsearch.tpl
Автор: coder
return "<img src=\"{$link->getImageLink('" + data.prewrite + "', '" + data.image + "', 'размер картинки')}\" />" + value;Картинки показывает.