Как вывести картинки товаров в личном кабинете
По умолчанию в личном кабинете покупателя на странице «Мои заказы» отображаются только названия товаров без изображений. Это неудобно — покупатель не всегда помнит товар по названию. Добавим миниатюры товаров к каждому заказу.
Какой файл редактировать
Заголовок раздела «Какой файл редактировать»Откройте файл my.orders.html вашей темы дизайна:
wa-data/public/shop/themes/<ваша_тема>/my.orders.htmlИли через бекенд: Магазин → Витрина → Темы дизайна → my.orders.html.
Найдите в файле строку:
{if !empty($o.items)}Сразу после неё добавьте следующий код:
{foreach $o.items as $i} {if $i.type == 'product'} {$product_id = $i.product_id} {$products = $wa->shop->product($product_id)} {foreach $products.images as $image} {if $image@first} {$wa->shop->productImgHtml(['id' => $product_id, 'image_id' => $image.id, 'ext' => $image.ext], '65')} {/if} {/foreach} {/if}{/foreach}Что делает код
Заголовок раздела «Что делает код»{foreach $o.items as $i}— перебирает все позиции в заказе.{if $i.type == 'product'}— проверяет, что позиция является товаром (а не услугой или доставкой).$wa->shop->product($product_id)— загружает данные о товаре по его ID, включая массив изображений.{if $image@first}— берёт только первое (главное) изображение товара.$wa->shop->productImgHtml(..., '65')— формирует HTML-тег<img>с миниатюрой размером 65 пикселей.
Настройка размера миниатюры
Заголовок раздела «Настройка размера миниатюры»Число '65' — это размер изображения в пикселях. Измените его по необходимости:
'48'— мелкая иконка'65'— стандартная миниатюра'96'— крупная миниатюра
Стилизация
Заголовок раздела «Стилизация»Чтобы миниатюры аккуратно отображались в списке заказов, добавьте стили в user.css:
.my-order-items img { border-radius: 4px; margin: 2px 4px 2px 0; vertical-align: middle;}Ограничение количества выводимых изображений
Заголовок раздела «Ограничение количества выводимых изображений»Если нужно показать миниатюры только для первых нескольких товаров в заказе:
{foreach $o.items as $i} {if $i.type == 'product' && $i@iteration <= 5} {$product_id = $i.product_id} {$products = $wa->shop->product($product_id)} {foreach $products.images as $image} {if $image@first} {$wa->shop->productImgHtml(['id' => $product_id, 'image_id' => $image.id, 'ext' => $image.ext], '65')} {/if} {/foreach} {/if}{/foreach}Здесь $i@iteration <= 5 ограничивает вывод первыми пятью товарами.