Magento 2 如何将自定义属性添加到发票电子邮件和发票 PDF
Magento 2 how to add custom attributes to the invoice email and invoice PDF
我要求每个产品都有两个属性,即
1. is_product_old
2. if_old_comment
在发票电子邮件和发票pdf的末尾,我需要显示if_old_comment以防is_product_old 是 是 对于每个订购的产品。
我的问题是我不知道我应该编辑哪些文件来自定义发票电子邮件和发票 pdf。
然后在两者的最后,我将在该发票中获取该订单的产品列表
对于每个产品,我将显示 if_old_comment,以防 is_product_old 对那个产品是肯定的。
所以我想知道我需要为此编辑哪些文件以及可以帮助我获取 this->invoiceId 的产品列表的功能以及如何获取 productID 的属性。
我在 Magento 2.2.2
在这里我回答我自己的问题,其他人可能会从中得到帮助。
获取电子邮件模板底部的评论:
我创建了两个产品属性 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 代码后,我在电子邮件模板底部收到了评论 If any added to each product。
我要求每个产品都有两个属性,即 1. is_product_old 2. if_old_comment
在发票电子邮件和发票pdf的末尾,我需要显示if_old_comment以防is_product_old 是 是 对于每个订购的产品。
我的问题是我不知道我应该编辑哪些文件来自定义发票电子邮件和发票 pdf。
然后在两者的最后,我将在该发票中获取该订单的产品列表
对于每个产品,我将显示 if_old_comment,以防 is_product_old 对那个产品是肯定的。
所以我想知道我需要为此编辑哪些文件以及可以帮助我获取 this->invoiceId 的产品列表的功能以及如何获取 productID 的属性。
我在 Magento 2.2.2
在这里我回答我自己的问题,其他人可能会从中得到帮助。
获取电子邮件模板底部的评论:
我创建了两个产品属性 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 代码后,我在电子邮件模板底部收到了评论 If any added to each product。