way1 Posted September 1, 2013 Share Posted September 1, 2013 Мне нужно было показывать картинки товаров вместе с наименованием товаров в результатах быстрого поиска. Для 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? Может кто-то подскажет, как скорректировать его. Или может использовать какое-то маленькое изображение из списка изображений товаров? Было бы хорошо такой хак добавить не только в результаты быстрого поиска товаров, но и при редактировании заказа - добавлении нового товара в заказа, например. Зрительный образ облегчает быстрый выбор из списка схожих названий. Так что скорректированный вариант будет полезен всем. Прошу помощи! Link to comment Share on other sites More sharing options...
Kerm Posted September 2, 2013 Share Posted September 2, 2013 А чего тебе мешает создать свой уникальный тип изображений и выводить именно его в поиске? Link to comment Share on other sites More sharing options...
Kerm Posted September 2, 2013 Share Posted September 2, 2013 (edited) Примерно так: <img src=\"" + baseDir + "img/p/" + data.id_product + "-" + data.id_image + "-small.jpg\" alt=\"" + value + "\" /> Единственное я точно не помню, но вроде чтобы вывести id_image нужно дописать немного в sql запрос Edited September 2, 2013 by Kerm (see edit history) Link to comment Share on other sites More sharing options...
way1 Posted September 2, 2013 Author Share Posted September 2, 2013 А чего тебе мешает создать свой уникальный тип изображений и выводить именно его в поиске? Отсутствие знаний в программировании Ваш подход мне нравится больше, но сам я не решу этот вопрос. Простая подстановка Вашего варианта не решает проблемы - видимо надо делать еще что-то, как Вы и писали. Вот в другом форуме написали, что это вновь добавленная цифра в конце файлов 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 категории. Link to comment Share on other sites More sharing options...
way1 Posted September 2, 2013 Author Share Posted September 2, 2013 Вот в одном форуме нашел такой код для вставки в blockcart.tpl, чтобы в ajax корзине в выпадающем списке показывались изображения товаров вместе с их наименованием: <span style="display: inline-block; float:left"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'small_default')}" alt=""></span> Нельзя это как-то задействовать в приведенном в начале поста коде, чтобы изображения показывались в результатах быстрого поиска? В корзине они показываются нормально. Link to comment Share on other sites More sharing options...
AlexSw Posted September 5, 2013 Share Posted September 5, 2013 Примерно так: <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 Link to comment Share on other sites More sharing options...
way1 Posted September 6, 2013 Author Share Posted September 6, 2013 Нужно переопределить метод 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. Переопределение при этом необходимо? Link to comment Share on other sites More sharing options...
AlexSw Posted September 6, 2013 Share Posted September 6, 2013 Переопределять метод не обязательно. Если вы измените этот метод в классе Search, то такой вариант тоже будет работать. Но после обновления пропадут все ваши изменения в стандарных классах и вам опять придеться изменять код. В prestashop предусмотрена возможность расширения базовой функциональности через переопределение стандарных классов - Overriding a class Для переопределения стандарных классов нужно создать в папке override/classes/ файл php, с тем же названием, что класс, который вы хотите изменить. В нем переопределите нужный вам метод (функцию), добавьте или измените функциональность. Link to comment Share on other sites More sharing options...
way1 Posted September 6, 2013 Author Share Posted September 6, 2013 Переопределять метод не обязательно. Спасибо - все подробно разъяснили! Link to comment Share on other sites More sharing options...
grower Posted February 12, 2014 Share Posted February 12, 2014 а можно по конкретнее, а именно куда какие изменения вносить? Link to comment Share on other sites More sharing options...
AlexSw Posted February 12, 2014 Share Posted February 12, 2014 а можно по конкретнее, а именно куда какие изменения вносить? Выше все написано. Для prestashop 1.5.5, если менять напрямую в файлах, то вот здесть есть описание какие файлы и в какой линии. http://prestashop-forum.ru/index.php?topic=1507.msg7387#msg7387 Link to comment Share on other sites More sharing options...
grower Posted February 12, 2014 Share Posted February 12, 2014 (edited) у меня преста 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 February 12, 2014 by grower (see edit history) Link to comment Share on other sites More sharing options...
AlexSw Posted February 13, 2014 Share Posted February 13, 2014 Если проблемы со всеми катртинками, то это настройка чпу. При отключении чпу путь у картинки правильный? Link to comment Share on other sites More sharing options...
grower Posted February 13, 2014 Share Posted February 13, 2014 Нет, отключение ЧПУ ни к чему не привело, может есть еще варианты, ошибки не со всеми картинками, а именно с теми которые в быстром поиске, подкатегориях и еще если не заливаешь второе фото для товара, то при наведении на картинку товара, изображение сменяется на битое (ссылку в никуда я написал постом выше) где копать? Link to comment Share on other sites More sharing options...
Mc_max Posted April 2, 2014 Share Posted April 2, 2014 Заменил: 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 работает с включеным чпу. Link to comment Share on other sites More sharing options...
rozoom Posted March 17, 2016 Share Posted March 17, 2016 А как реализовать живой поиск с картинками в Prestashop 1.6? Link to comment Share on other sites More sharing options...
Kerm Posted March 18, 2016 Share Posted March 18, 2016 (edited) А как реализовать живой поиск с картинками в Prestashop 1.6? Пользуйтесь поиском на сайте, было уже. Я недавно делал, прикрепил файл который нужно положить в папку /override/classes/ Search.php И js файл положить в themes\тема\js\modules\blocksearch\ blocksearch.txt PS.: Ну и естественно txt надо переименовать в js и после всего удалить файл class_index.php и почистить кеш браузера. По стилям как оформить полученный результат уже сам разберешься.. Edited March 18, 2016 by Kerm (see edit history) 1 Link to comment Share on other sites More sharing options...
rozoom Posted June 8, 2016 Share Posted June 8, 2016 Пользуйтесь поиском на сайте, было уже. Я недавно делал, прикрепил файл который нужно положить в папку /override/classes/ Search.php И js файл положить в themes\тема\js\modules\blocksearch\ blocksearch.txt PS.: Ну и естественно txt надо переименовать в js и после всего удалить файл class_index.php и почистить кеш браузера. По стилям как оформить полученный результат уже сам разберешься.. Большое спасибо! Всё работает! 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now