Immagine del prodotto errata nell'e-mail dell'ordine di vendita in modalità di produzione - Magento2.3.5
Utilizziamo il seguente codice per caricare l'immagine del prodotto nell'e-mail dell'ordine di vendita. Funziona perfettamente in modalità sviluppatore, ma quando passiamo alla modalità di produzione le immagini non sono corrette per coloro che non hanno alcuna immagine.
In tal caso il prodotto che non ha alcuna immagine, non il segnaposto viene mostrato come dovresti aspettarti, ma viene visualizzata la stessa immagine del prodotto del prodotto sopra.
Il prossimo prodotto in linea che ha un'immagine, che viene quindi visualizzata bene.
Vedere:

Come possiamo risolvere questo problema?
Modello:/app/design/frontend/theme/theme/Magento_Sales/templates/email/items/invoice/default.phtml
CODICE:
<?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;?>"
Risposte
puoi usare un helper come qui sotto:
<?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 '';
}
}
quindi questo helper dovrà essere utilizzato nel tuo modello di posta elettronica: la riga seguente produrrà un'immagine: il modello di posta elettronica predefinito per l'elemento in Magento è vendor/magento/module-sales/view/frontend/templates/email/items/order/default.phtml
. Potresti aver personalizzato questo modello e quindi dovrai recuperarlo nella cartella del tema.
<?= $helper->getCartItemImage($_item) ?>