Автор Тема: Выбор цвета в фильтре (основная комбинация товара такого же цвета и в каталоге)  (Прочитано 494 раз)

25 Июня 2015, 13:40:04
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите,
Для каждого товара имеется несколько комбинаций с различными цветами.
Требуется, чтобы при выборе в фильтре blocklayered конкретного цвета, в выдаче каталога отображались товары, где главной основной комбинацией была того же цвета.
Как можно реализовать подобное?

Заранее спасибо!


25 Июня 2015, 16:22:57
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 13126
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если такой атрибут цвет есть у товара, то его покажет. Если нет, то никакие основы учитывать не будет.
Фильтры так работают, что можно фильтровать только по значению, а не по похожести.
25 Июня 2015, 16:48:41
Ответ #2
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если такой атрибут цвет есть у товара, то его покажет. Если нет, то никакие основы учитывать не будет.
Фильтры так работают, что можно фильтровать только по значению, а не по похожести.

Всё правильно у товара есть три комбинации каждая со своим цветом.
Как вывести в каталоге товара основное изображение с тем цветом которое было указано в фильтре.

Сейчас отображается изображение по умолчанию плюс пиктограмки других цветов в т.ч. которое ищется...
25 Июня 2015, 17:08:15
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 13126
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Так при фильтрации и так показывает товары по выбранному цвету, фото показывает, которое соотвествует выбранному цвету, а не по умолчанию.
25 Июня 2015, 17:14:55
Ответ #4
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Так при фильтрации и так показывает товары по выбранному цвету, фото показывает, которое соотвествует выбранному цвету, а не по умолчанию.

Ну почему же. Вот demo магазин http://demo.prestashop.com/en/?view=front

Перехожу во вкладку WOMEN и выбираю Color = Black

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

И да я понимаю что пиктограмки с черным цветом присутствуют..
26 Июня 2015, 15:35:47
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 2158
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
Это в модуле blocklayered и шаблоне product-list.tpl нужно менять.
В шаблоне всегда ставится картинка по-умолчанию. Вот и нужно ее заменить, когда срабатывает blocklayered.
29 Июня 2015, 09:15:34
Ответ #6
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Это в модуле blocklayered и шаблоне product-list.tpl нужно менять.
В шаблоне всегда ставится картинка по-умолчанию. Вот и нужно ее заменить, когда срабатывает blocklayered.

Тогда уж шаблон product-item.tpl необходимо менять.
Любая помощь будет полезной!!!
29 Июня 2015, 09:24:57
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85945
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
29 Июня 2015, 09:54:10
Ответ #8
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
product-item.tpl - в станларной теме нет такого.

Вот так выводится изображение товара

<img style="max-width:245px;display:block;margin:0 auto;" class="replace-2x img-responsive" src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" title="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" itemprop="image" />

собственно основная часть здесь

$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')

Как получить нужные  $product.link_rewrite и $product.id_image (c цветом выбранным в blocklayered)?
Как для начала получить цвет указанный в blocklayered непосредственно в самом шаблоне?
29 Июня 2015, 10:18:20
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
$product.link_rewrite
Ссылка на товар, можно не учитывать.

Нужно только переопределить id_image
$product.id_image - передавать ид изображения по выбранному фильтру.
Можно попробывать через reloadContent в blocklayered.js переопределить изображение.
29 Июня 2015, 10:24:07
Ответ #10
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85945
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
$product.link_rewrite
Ссылка на товар, можно не учитывать.

Нужно только переопределить id_image
$product.id_image - передавать ид изображения по выбранному фильтру.
Можно попробывать через reloadContent в blocklayered.js переопределить изображение.
Если нужно сменить изображение, делать это в функции getProducts модуля BlockLayered.
29 Июня 2015, 11:06:21
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 20837
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Выборку менять нужно. В запросах картинка по умолчанию.
/modules/blocklayered/blocklayered.php
public function getProductByFilters($selected_filters = array())
{
...
        $this->products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT
p.*,
'.($alias_where == 'p' ? '' : 'product_shop.*,' ).'
'.$alias_where.'.id_category_default,
pl.*,
image_shop.`id_image` id_image,
...
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
29 Июня 2015, 11:17:57
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 1190
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В функции refreshProductImages(id_product_attribute) в файле product.js меняется картинка при выборе атрибута цвета. Добавить эту функцию при выборе фильтров и ничего не нужно переделывать.
29 Июня 2015, 11:20:49
Ответ #13
  • Старожил
  • ****
  • Сообщений: 254
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Выборку менять нужно. В запросах картинка по умолчанию.
/modules/blocklayered/blocklayered.php
public function getProductByFilters($selected_filters = array())
{
...
        $this->products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT
p.*,
'.($alias_where == 'p' ? '' : 'product_shop.*,' ).'
'.$alias_where.'.id_category_default,
pl.*,
image_shop.`id_image` id_image,
...

Я правильно понимаю, что вместо MAX(image_shop.`id_image`) id_image,
необходимо указать image_shop.`id_image` id_image???

Как указать  id_image с требуемым цветом?
29 Июня 2015, 11:43:57
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 20837
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Цитировать
Как указать  id_image с требуемым цветом?
По ид выбранного фильтра
Product::getCombinationImageById($id_product_attribute, $id_lang)
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!