Hello,
We need to display custom attribute (Lead Time) in order confirmation email as per the attached image.
Can you please advise how can I Achieve this? Our Magento version is 2.3.3
Hello @marketingi
Please follow the below steps to add custom attribute after SKU in order email :
public function getCustomAttr($id){ $product = $this->productFactory->create()->load($id); return $product->getCustomAttribute(); }
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ // phpcs:disable Magento2.Templates.ThisInTemplate /** @var $block \Magento\Sales\Block\Order\Email\Items\DefaultItems */ /** @var $_item \Magento\Sales\Model\Order\Item */ $_item = $block->getItem(); $_order = $_item->getOrder(); ?> <tr> <td class="item-info<?= ($block->getItemOptions() ? ' has-extra' : '') ?>"> <p class="product-name"><?= $block->escapeHtml($_item->getName()) ?></p> <p class="sku"><?= $block->escapeHtml(__('SKU')) ?>: <?= $block->escapeHtml($block->getSku($_item)) ?></p> <p class="attribute"><?= $block->getCustomAttr($_item->getId()); ?></p> <?php if ($$block->escapeHtml(block->getItemOptions())); ?> <dl class="item-options"> <?php foreach ($block->getItemOptions() as $option) : ?> <dt><strong><em><?= $block->escapeHtml($option['label']) ?></em></strong></dt> <dd> <?= /* @noEscape */ nl2br($block->escapeHtml($option['value'])) ?> </dd> <?php endforeach; ?> </dl> <?php endif; ?> <?php $addInfoBlock = $block->getProductAdditionalInformationBlock(); ?> <?php if ($addInfoBlock) :?> <?= $addInfoBlock->setItem($_item)->toHtml() ?> <?php endif; ?> <?= $block->escapeHtml($_item->getDescription()) ?> </td> <td class="item-qty"><?= (float) $_item->getQtyOrdered() ?></td> <td class="item-price"> <?= /* @noEscape */ $block->getItemPrice($_item) ?> </td> </tr> <?php if ($_item->getGiftMessageId() && $_giftMessage = $this->helper(\Magento\GiftMessage\Helper\Message::class) ->getGiftMessage($_item->getGiftMessageId()) ) : ?> <tr> <td colspan="3" class="item-extra"> <table class="message-gift"> <tr> <td> <h3><?= $block->escapeHtml(__('Gift Message')) ?></h3> <strong><?= $block->escapeHtml(__('From:')) ?></strong> <?= $block->escapeHtml($_giftMessage->getSender()) ?> <br /><strong><?= $block->escapeHtml(__('To:')) ?></strong> <?= $block->escapeHtml($_giftMessage->getRecipient()) ?> <br /><strong><?= $block->escapeHtml(__('Message:')) ?></strong> <br /><?= $block->escapeHtml($_giftMessage->getMessage()) ?> </td> </tr> </table> </td> </tr> <?php endif; ?>
Hope it will resolve your problem !
Hello @gaurav_harsh1 ,
Thank you for your reply.
Actually we need to display Lead Time attribute value for each item in the email (attribute code is lead_time) How to get the value of the Lead Time attribute
Then your overrided class function would be :
public function getCustomAttr($id){ $product = $this->productFactory->create()->load($id); return $product->getLeadTime(); }
Hope you are clear with overriding Block by creating preference and block class!