Magento 2如何将自定义属性添加到发票电子邮件和发票PDF

时间:2018-09-27 06:52:30

标签: php magento2 magento2.2

我要求每个产品都具有两个属性,即  1. is_product_old  2. if_old_comment

发票电子邮件和发票pdf 的末尾,如果 is_product_old ,我需要显示 if_old_comment >对于订购的每种产品。

我的问题是我不知道我应该编辑哪些文件以自定义发票电子邮件和发票pdf。

然后在两者的结尾处,我都会在该发票中获得该订单的产品清单

对于每种产品,如果该产品的is_product_old为yes,我将显示if_old_comment。

所以我想知道我需要为此编辑哪些文件和功能,这些文件可以帮助我获取此-> invoiceId的产品列表以及如何获取productID的属性。

我在Magento 2.2.2中

1 个答案:

答案 0 :(得分:0)

在这里我回答自己的问题,其他人可能会从中获得帮助。

在电子邮件模板的底部获取评论:

我创建了两个产品属性 is_product_old if_old_comment

和用于此类销售的扩展电子邮件模板:

app / design / frontend / Codazon / fastest / ellyana / Magento_Sales / templates / email

<?php
/**
* Copyright © Magento, Inc. 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>
//Here I added my code  
<table>
    <?php 
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    ?>
    <?php foreach ($_order->getAllItems() as $_item): ?>
        <?php
            if ($_item->getParentItem()) {
                continue;
            }
        ?>
        <tbody>
            <?php 
                $objectManager = Magento\Framework\App\ObjectManager::getInstance();
                $productId = $objectManager->get('Magento\Catalog\Model\Product')->getIdBySku($_item->getSku());
                $product = $objectManager->get('Magento\Catalog\Model\Product')->load($productId);
                $is_refurb =   $product->getAttributeText('is_refurb');     
                if($is_refurb=='Yes'){
            ?>
                    <p><b><?= $product->getRefurbComment(); ?></b></p>
            <?php        
                }
            ?>
        </tbody>
    <?php endforeach; ?>
</table>
// here my code ends

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

在添加了cutsom代码之后,我收到了注释(如果在电子邮件模板的底部添加了每个产品的注释)。