รูปภาพสินค้าไม่ถูกต้องในอีเมลใบสั่งขายในโหมดการผลิต - 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เทมเพลตอีเมลเริ่มต้นสำหรับรายการในวีโอไอพี คุณอาจปรับแต่งเทมเพลตนี้แล้วดังนั้นคุณจะต้องดึงข้อมูลจากโฟลเดอร์ธีมของคุณ

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