Перейти к содержимому

Как вывести картинки товаров в личном кабинете

По умолчанию в личном кабинете покупателя на странице «Мои заказы» отображаются только названия товаров без изображений. Это неудобно — покупатель не всегда помнит товар по названию. Добавим миниатюры товаров к каждому заказу.

Откройте файл 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}
  1. {foreach $o.items as $i} — перебирает все позиции в заказе.
  2. {if $i.type == 'product'} — проверяет, что позиция является товаром (а не услугой или доставкой).
  3. $wa->shop->product($product_id) — загружает данные о товаре по его ID, включая массив изображений.
  4. {if $image@first} — берёт только первое (главное) изображение товара.
  5. $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 ограничивает вывод первыми пятью товарами.