Gambar produk salah di email pesanan penjualan dalam mode produksi - Magento2.3.5

Aug 19 2020

Kami menggunakan kode berikut untuk memuat gambar produk di email pesanan penjualan. Ini berfungsi sempurna dalam mode pengembang, tetapi ketika kami beralih ke mode produksi, gambar tidak sesuai untuk mereka yang tidak mendapatkan gambar apa pun.

Dalam hal produk yang tidak memiliki gambar apa pun, bukan placeholder yang ditampilkan seperti yang Anda harapkan, tetapi gambar produk yang sama seperti produk di atas yang ditampilkan.

Produk berikutnya dalam baris yang tidak memiliki gambar apa pun, yang kemudian ditampilkan dengan baik.

Lihat:

Bagaimana kita bisa mengatasi ini?

Template: /app/design/frontend/theme/theme/Magento_Sales/templates/email/items/invoice/default.phtml

KODE:

<?php $_item = $block->getItem()
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $product_id = $_item->getProductId(); $product = $objectManager->get('Magento\Catalog\Model\Product')->load($product_id);
$_imagehelper = $objectManager->get('Magento\Catalog\Helper\Image');
$image_url = $_imagehelper->init($product, 'cart_page_product_thumbnail')->getUrl();?> <img src="<?= $image_url;?>"

Jawaban

1 HerveTribouilloy Aug 22 2020 at 01:01

Anda dapat menggunakan pembantu seperti di bawah ini:

<?php

namespace Mbs\OrderEmail\Helper;

use Magento\Framework\App\Helper\AbstractHelper;
use Magento\Framework\App\Helper\Context;

class GetItemImage extends AbstractHelper
{
    /**
     * @var \Magento\Catalog\Block\Product\ImageBuilder
     */
    private $imageBuilder; public function __construct( Context $context,
        \Magento\Catalog\Block\Product\ImageBuilder $imageBuilder ) { parent::__construct($context);
        $this->imageBuilder = $imageBuilder;
    }

    public function getCartItemImage($item) { if ($item->getProduct() instanceof \Magento\Catalog\Model\Product) {
            return $this->imageBuilder->create($item->getProduct(), 'category_page_grid')->toHtml();
        }

        return '';
    }
}

maka helper ini perlu digunakan di template email Anda: baris di bawah ini akan menampilkan gambar: template email default untuk item di Magento adalah vendor/magento/module-sales/view/frontend/templates/email/items/order/default.phtml. Anda mungkin telah menyesuaikan template ini dan oleh karena itu Anda perlu mengambilnya dari folder tema Anda.

<?= $helper->getCartItemImage($_item) ?>