Jump to content
way1

Картинки товаров в результатах поиска в Prestashop 1.5.5.0

Recommended Posts

Мне нужно было показывать картинки товаров вместе с наименованием товаров в результатах быстрого поиска. Для Prestashop 1.5.4.1 я использовал следующий хак в файле \modules\blocksearch\blocksearch-instantsearch.tpl (75-я строка):

 

Заменил:

 

return value;

 

на

 

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

 

 

ПРИМЕЧАНИЕ: В качестве картинок товаров использовал картинки с именем product_mini_ , которые используются Prestashop для показа изображений товаров в каталоге со стороны админки. Поясню, что они генерируются автоматически в папке \img\tmp\ при просмотре каталога в админке. Их можно удалить, и они будут автоматически сгенерированы заново при первом заходе администратором в список товаров в админке.

 

Все работало отлично.

 

Поставил 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 в конце имен? Разработчики добавили еще какой-то ID? Например ID магазина (1.5.x - это же мультишоп)?

 

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

 

Может кто-то подскажет, как скорректировать его. Или может использовать какое-то маленькое изображение из списка изображений товаров?

 

Было бы хорошо такой хак добавить не только в результаты быстрого поиска товаров, но и при редактировании заказа - добавлении нового товара в заказа, например. Зрительный образ облегчает быстрый выбор из списка схожих названий.

 

Так что скорректированный вариант будет полезен всем. Прошу помощи!

post-385044-0-54876600-1378035214_thumb.jpg

post-385044-0-87455900-1378035239_thumb.jpg

Share this post


Link to post
Share on other sites

А чего тебе мешает создать свой уникальный тип изображений и выводить именно его в поиске?

Share this post


Link to post
Share on other sites

Примерно так:

<img src=\"" + baseDir + "img/p/" + data.id_product + "-" + data.id_image + "-small.jpg\"  alt=\"" + value + "\" />

Единственное я точно не помню, но вроде чтобы вывести id_image нужно дописать немного в sql запрос

Edited by Kerm (see edit history)

Share this post


Link to post
Share on other sites

А чего тебе мешает создать свой уникальный тип изображений и выводить именно его в поиске?

Отсутствие знаний в программировании  :)

 

Ваш подход мне нравится больше, но сам я не решу этот вопрос. Простая подстановка Вашего варианта не решает проблемы - видимо надо делать еще что-то, как Вы и писали.

 

Вот в другом форуме написали, что это вновь добавленная цифра в конце файлов product_mini_ - это ID категории.

 

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

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

Но у меня не заработало. Я думаю, что они ошибаются - это не ID категории. Я проверил изображения товаров в product_mini_ у всех у них в конце стоит _1. А относятся они к категориям с разными ID.

 

Поэтому это не ID категории.

Share this post


Link to post
Share on other sites

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

<span style="display: inline-block; float:left"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'small_default')}" alt=""></span>

Нельзя это как-то задействовать в приведенном в начале поста коде, чтобы изображения показывались в результатах быстрого поиска? В корзине они показываются нормально.

Share this post


Link to post
Share on other sites

Примерно так:

<img src=\"" + baseDir + "img/p/" + data.id_product + "-" + data.id_image + "-small.jpg\"  alt=\"" + value + "\" />

Единственное я точно не помню, но вроде чтобы вывести id_image нужно дописать немного в sql запрос

 

Нужно переопределить метод

public static function find($id_lang, $expr, $page_number = 1, $page_size = 1, $order_by = 'position',
$order_way = 'desc', $ajax = false, $use_cookie = true, Context $context = null)

в классе Seach.php (линия 281), добавить в запрос выборку изображений.

if ($ajax)
{
    $sql = 'SELECT DISTINCT p.id_product, pl.name pname, cl.name cname,
                cl.link_rewrite crewrite, pl.link_rewrite prewrite, i.id_image image '.$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` i ON (i.`id_product` = p.`id_product`)'.
            Shop::addSqlAssociation('image', 'i', true, 'image_shop.cover=1').'
            WHERE p.`id_product` '.$product_pool.'
            ORDER BY position DESC LIMIT 10';
    return $db->executeS($sql);
}

и в шаблоне лучше использовать такой вывод

<img src=\"{$link->getImageLink('" + data.prewrite + "', '" + data.image + "', 'small_default')}\" />

Такое решение было предложено на форуме prestashop-forum.ru

Проверено на версиях 1.5.4 - 1.5.5

Share this post


Link to post
Share on other sites

 

Нужно переопределить метод

public static function find($id_lang, $expr, $page_number = 1, $page_size = 1, $order_by = 'position',
$order_way = 'desc', $ajax = false, $use_cookie = true, Context $context = null)

 

А где это надо переопределить и как?

 

Если сделать два изменения, что указаны были на форуме prestashop-forum.ru  в Search.php и blocksearch-instantsearch.tpl, вроде все работало в 1.5.5.0. Переопределение при этом необходимо?

Share this post


Link to post
Share on other sites

Переопределять метод не обязательно. Если вы измените этот метод в классе Search, то такой вариант тоже будет работать. Но после обновления пропадут все ваши изменения в стандарных классах и вам опять придеться изменять код.

В prestashop предусмотрена возможность расширения базовой функциональности через переопределение стандарных классов - Overriding a class 

Для переопределения стандарных классов нужно создать в папке override/classes/ файл php, с тем же названием, что класс, который вы хотите изменить. В нем переопределите нужный вам метод (функцию), добавьте или измените функциональность.

Share this post


Link to post
Share on other sites

Переопределять метод не обязательно

.

Спасибо - все подробно разъяснили!

Share this post


Link to post
Share on other sites

а можно по конкретнее, а именно куда какие изменения вносить?

Share this post


Link to post
Share on other sites

а можно по конкретнее, а именно куда какие изменения вносить?

Выше все написано.

Для prestashop 1.5.5, если менять напрямую в файлах, то вот здесть есть описание какие файлы и в какой линии.

http://prestashop-forum.ru/index.php?topic=1507.msg7387#msg7387

Share this post


Link to post
Share on other sites

у меня преста 1.5.6.2

Всё сделал как описано, но картинки по прежнему не загружаются... 

путь тот же /img/tmp/product_mini_11.jpg, а должно быть img/tmp/product_mini_11_1.jpg

 

такая проблема не только в быстром поиске, в подкатегориях и еще в товарах при наведении (например: /-home/sbornik-zhurnalov-1-4.jpg (/-home/  - такого пути вообще нет нигде)) 

Edited by grower (see edit history)

Share this post


Link to post
Share on other sites

Если проблемы со всеми катртинками, то это настройка чпу. При отключении чпу путь у картинки правильный?

Share this post


Link to post
Share on other sites

Нет, отключение ЧПУ ни к чему не привело, может есть еще варианты, ошибки не со всеми картинками, а именно с теми которые в быстром поиске, подкатегориях и еще если не заливаешь второе фото для товара, то при наведении на картинку товара, изображение сменяется на битое (ссылку в никуда я написал постом выше)

 

где копать?

Share this post


Link to post
Share on other sites

 

Заменил:

 

return value;

на

 

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

 

Только я заменял на

return "<img src=\"{$link->getImageLink('" + data.prewrite + "', '" + data.id_product + "', 'small_default')}\" />" + value;

 

Версия 1.5.6.2 работает с включеным чпу.

Share this post


Link to post
Share on other sites

А как реализовать живой поиск с картинками в Prestashop 1.6?

Share this post


Link to post
Share on other sites

А как реализовать живой поиск с картинками в Prestashop 1.6?

 

Пользуйтесь поиском на сайте, было уже.

 

Я недавно делал, прикрепил файл который нужно положить в папку /override/classes/

 

Search.php

 

И js файл положить в themes\тема\js\modules\blocksearch\

 

blocksearch.txt

 

PS.: Ну и естественно txt надо переименовать в js и после всего удалить файл class_index.php и почистить кеш браузера.

 

По стилям как оформить полученный результат уже сам разберешься..

Edited by Kerm (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

Пользуйтесь поиском на сайте, было уже.

 

Я недавно делал, прикрепил файл который нужно положить в папку /override/classes/

 

attachicon.gifSearch.php

 

И js файл положить в themes\тема\js\modules\blocksearch\

 

attachicon.gifblocksearch.txt

 

PS.: Ну и естественно txt надо переименовать в js и после всего удалить файл class_index.php и почистить кеш браузера.

 

По стилям как оформить полученный результат уже сам разберешься..

 

Большое спасибо! Всё работает! 

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More