Индивидуальные Размеры Иконок (Изображений Товаров)

Добрый день!

Для магазина существуют общие настройки для установки размеров иконок.

А у категорий есть настройка "Просмотры" -> "Использовать собственное отображение", где можно установить требуемое количество колонок в сетке. Если установить меньше 4 колонок, то изображение будет слишком маленьким.

Как для "собственного отображения" генерировать индивидуальные размеры изображений не изменяя стандартных настроек?

Так там же ниже настройка?

http://prntscr.com/ebjmil

Или я вас неправильно понял?

Нужно изменить размер изображения в зависимости от того, на сколько колонок настроена сетка. Когда 4 колонки то 150x150 px, когда 3 колонки, то 380x380 px

https://www.screencast.com/t/APrJYtAk

Если в глобальной настройке стоит 150x150, как-то можно сгенерировать другой размер? В какой момент движок нарезает миниатюры?

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

Нашел кое-что. За генерацию изображения отвечает функция fn_image_to_display, в которую передается 3 аргумента: изображение, ширина и высота.

В шаблоне design/themes/responsive/templates/views/products/components/product_icon.tpl подключается шаблон design/themes/responsive/templates/common/image.tpl в который и передаются эти 3 аргумента.

1. design/themes/responsive/templates/views/products/components/product_icon.tpl

{include file="common/image.tpl" no_ids=true images=$image_pair image_width=$settings.Thumbnails.product_lists_thumbnail_width image_height=$settings.Thumbnails.product_lists_thumbnail_height lazy_load=true}

2. design/themes/responsive/templates/common/image.tpl

{$image_data=$images|fn_image_to_display:$image_width:$image_height}
{$generate_image=$image_data.generate_image && !$external}
...
{$image_data.alt}

Осталось разобраться как добавить в глобальные настройки размеры для 1, 2 и 3 колонок.
И как сообщить шаблону сколько на данный момент колонок на странице.

Нужно изменить размер изображения в зависимости от того, на сколько колонок настроена сетка. Когда 4 колонки то 150x150 px, когда 3 колонки, то 380x380 px

https://www.screencast.com/t/APrJYtAk

Если в глобальной настройке стоит 150x150, как-то можно сгенерировать другой размер? В какой момент движок нарезает миниатюры?

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

Спасибо за пояснение. Тогда только доработкой, ведь на странице может быть сетка с 3 колонками и, например, 2 блока - один с 2 колонками и один с 4

Или можете указать максимальный размер, а less уже сам подстроит размеры для сетки с большим кол-вом колонок

Модификация кода “на коленке”, что бы миниатюры изображений генерировались с размерами отличными от глобальных настроек.
В данном случае, если установлено 2 колонки, то ширина и высота будут 380 пикселей.
Если 3 колонки, то по 300 пикселей соответственно.
Для установки своих значений нужно изменить переменную $image_size в шаблоне.

Измененный код шаблона design/themes/[my_theme]/templates/views/products/components/product_icon.tpl:

{capture name=“product_detail_view_url”}
{** Sets product detail view link *}
{hook name=“products:product_detail_view_url”}
{“products.view?product_id=$product.product_id”}
{/hook}
{/capture}

{$product_detail_view_url = $smarty.capture.product_detail_view_url|trim}

{* added code }
{if isset($block.properties.number_of_columns)}
{$columns = $block.properties.number_of_columns}
{elseif isset($category_data.product_columns)}
{$columns = $category_data.product_columns}
{/if}
{if $columns == 2}
{$image_size = [‘w’ => 380, ‘h’ => 380]}
{elseif $columns == 3}
{$image_size = [‘w’ => 300, ‘h’ => 300]}
{else}
{$image_size = [‘w’ => $settings.Thumbnails.product_lists_thumbnail_width, ‘h’ => $settings.Thumbnails.product_lists_thumbnail_height]}
{/if}
{
/added code *}

{capture name=“main_icon”}
<a href="{"$product_detail_view_url"|fn_url}">
{* rewrite code }
{include file=“common/image.tpl” obj_id=$obj_id_prefix images=$product.main_pair image_width=$image_size[‘w’] image_height=$image_size[‘h’]}
{
/rewrite code *}

{/capture}

{if $product.image_pairs && $show_gallery}

{if $product.main_pair}
{$smarty.capture.main_icon nofilter}
{/if} {foreach from=$product.image_pairs item="image_pair"} {if $image_pair} {/if} {/foreach}
{else} {$smarty.capture.main_icon nofilter} {/if}
2 лайка

Условие по настройкам блока лучше первым расположить, чтобы вид блоков на странице категории не менялся.