Получить все изображения продуктов в Magento 2 на странице списка продуктов

В Magento 1 я всегда использовал

$_product->getMediaGallery('images')

Но в исходниках от Magento 2 вижу

$productImage = $block->getImage($_product, $image);
echo $productImage->toHtml();

Это только получение первого изображения продукта. Как мне получить второе или третье изображение (не только базовое)?

Функция GetMediaGallery не существует?


person Xaiamedia    schedule 24.04.2016    source источник
comment
magento.stackexchange.com /questions/114691/ Пожалуйста, изучите это для правильного решения.   -  person Harpreet Singh    schedule 26.02.2020


Ответы (1)


Шаг 1: откройте list.phtml из вашей темы\Magento_Catalog\templates\product

$objectManager =  \Magento\Framework\App\ObjectManager::getInstance();

$_imagehelper = $this->helper('Magento\Catalog\Helper\Image');

Добавьте выше в свой файл phtml

затем добавьте ниже код в цикл продукта, где вы хотите изображения галереи

<div class="left-carousel">

                   <div  class="product-small-thumbs">
                    <?php $product = $objectManager->create('Magento\Catalog\Model\Product')->load($_product->getId());


                          $images = $product->getMediaGalleryImages();
                          if($images->count()>0){?>
                          <div class="carousel carousel-<?php $_product->getId()?>">


                         <?php
                          $i = 0;
                          foreach($images as $child){
                            $i++;
                            $productImage = $_imagehelper->init($product, 'product_page_image_large')
                                ->setImageFile($child->getFile())->constrainOnly(FALSE)->keepAspectRatio(TRUE)->keepFrame(TRUE)->resize(81,53)
                                ->getUrl();

                            $productImagedata = $_imagehelper->init($product, 'product_page_image_large')
                            ->setImageFile($child->getFile())->constrainOnly(FALSE)->keepAspectRatio(TRUE)->keepFrame(TRUE)->resize(285,240)
                            ->getUrl();
                            if($i==1) continue;

                            ?>
                            <div class="slide">
                             <img data-id="smallthumbs-<?php echo $_product->getId();?>" data-img="<?php echo $productImagedata; ?>" src="<?php echo $productImage; ?>"/>
                            </div>

                            <?php

                           }
                           ?>
                           </div>

                           <?php
                            }
                    ?>
                    </div>
                </div>
person Mohammad Aktaruzzaman    schedule 21.03.2017
comment
Magento запрещает прямое использование ObjectManager в вашем коде, потому что он скрывает реальные зависимости класса. devdocs.magento.com/guides/v2. 3/extension-dev-guide/ - person Davebra; 05.07.2019