Magento 2 lấy hình ảnh bộ sưu tập sản phẩm trên danh sách sản phẩm mà không cần mô hình tải trong vòng lặp


7

Tôi có thể lấy hình ảnh bộ sưu tập trên trang danh sách sản phẩm bằng cách sử dụng mã dưới đây:

<?php
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $product = $objectManager->create('Magento\Catalog\Model\Product')->load($_product->getId());        
    $images = $product->getMediaGalleryImages();
    foreach($images as $child){ ?>
        <img src="<?php echo $child->getUrl(); ?>" >
<?php } ?>

Tôi biết mô hình tải trong vòng lặp là thực tiễn xấu và nó ảnh hưởng đến hiệu suất. Có ai xin vui lòng gợi ý cho tôi cách tốt nhất để đạt được chức năng tương tự.

Câu trả lời:


1

=> Sử dụng mã này. Nó có thể hữu ích cho bạn.

<?php
$product->getMediaGalleryImages();

foreach($images as $child)
 { ?>

"<?php echo $child->getPath(); ?>
"<?php echo $child->getUrl(); ?>

}

1
use Magento\Catalog\Model\Product\Gallery\ReadHandler as GalleryReadHandler;

public function __construct(
    ...
    GalleryReadHandler $readHandler
    ...
)
{
    ...
    $this->readHandler = $readHandler;
    ...
}

/**
 * @param $product
 */
public function addGallery($product)
{
    $this->readHandler->execute($product);
}

và trong phtml của bạn

<?php foreach ($_productCollection as $_product): ?>
<?php $helper->addGallery($_product); ?>
<?php $gallery = $_product->getMediaGalleryImages(); ?>
...
<?php endforeach; ?>

Hy vọng nó giúp. Ngoài ra, vui lòng không sử dụng Trình quản lý đối tượng trực tiếp, điều đó hoàn toàn chống lại các thực tiễn tốt nhất, thay vào đó hãy tạo người trợ giúp của riêng bạn hoặc bất cứ điều gì và sử dụng phép tiêm phụ thuộc như trong ví dụ của tôi.


0

Bạn có thể thử làm theo những điều sau đây.

$product->getMediaGallery('images')

Hoặc là

$product->getMediaGalleryEntries():
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.