Magento 2 Produktbild in neuer Bestell-E-Mail


8

Ich möchte ein Bild des Produkts in die E-Mail-Sendung nach einer erfolgreichen Kaufabwicklung einfügen.

Ich bin so weit, dass ich ein Modul gemacht habe, das überschreibt

vendor/magento/module-sales/view/frontend/templates/email/items.phtml

Aber wie füge ich ein Miniaturbild ein?

items.phtml

<?php 
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/

// @codingStandardsIgnoreFile

?>
<?php $_order = $block->getOrder() ?>
<?php if ($_order): ?>
<?php $_items = $_order->getAllItems(); ?>
<table class="email-items">
    <thead>
        <tr>
            <th class="item-info">
                <?= /* @escapeNotVerified */  __('Items'); ?>
            </th>
            <th class="item-qty">
                <?= /* @escapeNotVerified */  __('Qty'); ?>
            </th>
            <th class="item-price">
                <?= /* @escapeNotVerified */  __('Price'); ?>
            </th>
        </tr>
    </thead>
    <?php foreach ($_items as $_item): ?>
        <?php
            if ($_item->getParentItem()) {
                continue;
            }
        ?>
        <tbody>
            <?= $block->getItemHtml($_item) ?>
        </tbody>
    <?php endforeach; ?>
    <tfoot class="order-totals">
        <?= $block->getChildHtml('order_totals') ?>
    </tfoot>
</table>
<?php if ($this->helper('Magento\GiftMessage\Helper\Message')->isMessagesAllowed('order', $_order, $_order->getStore()) && $_order->getGiftMessageId()): ?>
    <?php $_giftMessage = $this->helper('Magento\GiftMessage\Helper\Message')->getGiftMessage($_order->getGiftMessageId()); ?>
    <?php if ($_giftMessage): ?>
        <br />
        <table class="message-gift">
            <tr>
                <td>
                    <h3><?= /* @escapeNotVerified */  __('Gift Message for this Order') ?></h3>
                    <strong><?= /* @escapeNotVerified */  __('From:'); ?></strong> <?= $block->escapeHtml($_giftMessage->getSender()) ?>
                    <br /><strong><?= /* @escapeNotVerified */  __('To:'); ?></strong> <?= $block->escapeHtml($_giftMessage->getRecipient()) ?>
                    <br /><strong><?= /* @escapeNotVerified */  __('Message:'); ?></strong>
                    <br /><?= $block->escapeHtml($_giftMessage->getMessage()) ?>
                </td>
            </tr>
        </table>
    <?php endif; ?>
<?php endif; ?>

Antworten:


14

Dazu habe ich vendor/magento/module-sales/view/frontend/templates/email/items/order/default.phtmlin meinen Vorlagenordner kopiert app/design/frontend/[VENDOR]/[TEMPLATE]/Magento_Sales/templates/email/items/order/default.phtmlund dort die Bildspalte hinzugefügt ...

$_item = $block->getItem();
$_order = $_item->getOrder();
$_store = $_order->getStore();


$_imageHelper = \Magento\Framework\App\ObjectManager::getInstance()->get('Magento\Catalog\Helper\Image');
$_baseImageUrl = $_store->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA).'catalog/product';

und rechts unten

<img src="<?= $_imageHelper->init($_item->getProduct(), 'small_image', ['type'=>'small_image'])->keepAspectRatio(true)->resize('65','65')->getUrl();?>" alt="<?= __('Product Image');?>">

Füge ich den Code <img src = direkt unter dem Code $ _baseImageUrl = ein? Der Grund, den ich frage, ist, dass ich dabei einen Syntaxfehler erhalte und nur sicherstellen wollte? Danke für die Hilfe.
Rudy C.

Welche Art von Syntaxfehler haben Sie? (Denken Sie daran, short_open_tag auf php.ini zu aktivieren)
Ricardo Martins

1

Als Antwort auf Ricardo Martins Antwort. Ich musste das Produktbild der Kinder von konfigurierbaren Produkten zeigen. Hier ist der Code für diejenigen, die das gleiche Problem haben.

    <?php if($childProd = current($_item->getChildrenItems())):  ?>
        <img src="<?= $_imageHelper->init($childProd->getProduct(), 'small_image', ['type'=>'small_image'])->keepAspectRatio(true)->resize('65','65')->getUrl();?>" alt="<?= __('Product Image');?>">
    <?php else: ?>
        <img src="<?= $_imageHelper->init($_item->getProduct(), 'small_image', ['type'=>'small_image'])->keepAspectRatio(true)->resize('65','65')->getUrl();?>" alt="<?= __('Product Image');?>">               
    <?php endif; ?> 

0

Eigentlich habe ich es in der Magento-2-Version nicht versucht. Aber ich habe es in der Magento-1.9-Version versucht. Ich habe das Ergebnis.

Bitte gehen Sie das Produkt-Miniaturbild in Kundenauftrags -E-Mails durch. Dieser Link von magento connect manager für das Produkt-Miniaturbild in Auftrags-E-Mails.


Dies ist etwas, was ich will, aber nicht kompatibel mit Magento 2 ....
Jilco Tigchelaar

Noch keine Lösung ....
Jilco Tigchelaar

Eine Änderung in der Datei default.phtml hat keinerlei Einfluss auf die E-Mail. Auch wenn ich es im Stammordner manuell ändere, passierte nichts. Items.phmtl ist das, was ich beeinflussen muss, und das funktioniert jetzt. Aber wie man dort ein Bild bekommt ...
Jilco Tigchelaar

0

Ich gebe zu, dass dies eine schlechte Form ist, und es sollte in ein geeignetes Modul umgestaltet werden, das Dependency Injection anstelle der ObjectManager...

Das heißt, es gibt einen grundlegenden Code, den ich zum Arbeiten gebracht habe, der das Variationsbild des einfachen Produkts eines konfigurierbaren Produkts rendert, wenn Sie diese Option im Minicart aktiviert haben.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = null;

// Look up the simple product SKU
if ($sku = $_item->getProductOptionByCode('simple_sku')) {
    $productRepositoryInterface = $objectManager->get('\Magento\Catalog\Api\ProductRepositoryInterface');
    // get the simple product
    try {
        $product = $productRepositoryInterface->get($sku);
    } catch (Exception $e) {
        // this throws an exception if not found, so catch it
        if ($e->getMessage() != 'Requested product doesn\'t exist') {
            throw $e;
        }
    }
}

// if no simple product, get the usual product ID
if (!$product) {
    $product_id = $_item->getProductId();
    $product = $objectManager->get('Magento\Catalog\Model\Product')->load($product_id);
}

// now load the image for that product
$_imagehelper = $this->helper('Magento\Catalog\Helper\Image');
$image_url = $_imagehelper->init($product, 'cart_page_product_thumbnail')->getUrl();

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.