생산 모드에서 판매 주문 이메일의 잘못된 제품 이미지-Magento2.3.5

Aug 19 2020

다음 코드를 사용하여 판매 주문 이메일에 제품 이미지를로드합니다. 이것은 개발자 모드에서 완벽하게 작동하지만 프로덕션 모드로 전환하면 이미지가없는 사람들에게는 이미지가 올바르지 않습니다.

이 경우 이미지가없는 상품, 플레이스 홀더가 아닌 예상대로 표시되지만 위 상품과 동일한 상품 이미지가 표시됩니다.

이미지가있는 다음 제품은 잘 표시됩니다.

보다:

이 문제를 어떻게 해결할 수 있습니까?

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

암호:

<?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;?>"

답변

1 HerveTribouilloy Aug 22 2020 at 01:01

아래와 같은 도우미를 사용할 수 있습니다.

<?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 '';
    }
}

그러면이 도우미를 이메일 템플릿에서 사용해야합니다. 아래 줄은 이미지를 출력합니다 vendor/magento/module-sales/view/frontend/templates/email/items/order/default.phtml. Magento의 항목에 대한 기본 이메일 템플릿은 입니다. 이 템플릿을 사용자 정의했을 수 있으므로 테마 폴더 내에서 가져와야합니다.

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