Mauvaise image du produit dans l'e-mail de commande client en mode production - Magento2.3.5

Aug 19 2020

Nous utilisons le code suivant pour charger l'image du produit dans l'e-mail de commande client. Cela fonctionne parfaitement en mode développeur, mais lorsque nous passons en mode production, les images ne sont pas correctes pour ceux qui n'ont aucune image.

Dans ce cas, le produit qui n'a pas d'image, pas l'espace réservé est affiché comme vous devriez vous y attendre, mais la même image de produit que le produit ci-dessus est affichée.

Le prochain produit en ligne qui n'a aucune image, qui est alors bien affiché.

Voir:

comment pouvons nous résoudre ceci?

Modèle:/app/design/frontend/theme/theme/Magento_Sales/templates/email/items/invoice/default.phtml

CODE:

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

Réponses

1 HerveTribouilloy Aug 22 2020 at 01:01

vous pouvez utiliser un assistant comme ci-dessous :

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

alors cet assistant devra être utilisé dans votre modèle d'e-mail : la ligne ci-dessous affichera une image : le modèle d'e-mail par défaut pour l'élément dans Magento est vendor/magento/module-sales/view/frontend/templates/email/items/order/default.phtml. Vous avez peut-être personnalisé ce modèle et vous devrez donc le récupérer dans votre dossier de thème.

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