생산 모드에서 판매 주문 이메일의 잘못된 제품 이미지-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) ?>