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

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

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


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

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

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

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

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

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

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

Тогда уж шаблон product-item.tpl необходимо менять.
Любая помощь будет полезной!!!
29 Июнь 2015, 09:24:57
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
29 Июнь 2015, 09:54:10
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 527
  • Репутация: +1/-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
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
$product.link_rewrite
Ссылка на товар, можно не учитывать.

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

Нужно только переопределить id_image
$product.id_image - передавать ид изображения по выбранному фильтру.
Можно попробывать через reloadContent в blocklayered.js переопределить изображение.
Если нужно сменить изображение, делать это в функции getProducts модуля BlockLayered.
29 Июнь 2015, 11:06:21
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • 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
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В функции refreshProductImages(id_product_attribute) в файле product.js меняется картинка при выборе атрибута цвета. Добавить эту функцию при выборе фильтров и ничего не нужно переделывать.
29 Июнь 2015, 11:20:49
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 527
  • Репутация: +1/-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
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Цитировать
Как указать  id_image с требуемым цветом?
По ид выбранного фильтра
Product::getCombinationImageById($id_product_attribute, $id_lang)
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!