2017-01-16 16 views
1

Я использую следующий код в моем электронном шаблоне:Как использовать цикл в шаблоне электронной почты в Magento2

{{block type='core/template' area='frontend' template='email/files.phtml' links=$links}} 

и вот код PHTML:

<?php foreach ($this->getLinks() as $_link): ?> 
    <p><?php echo $_link; ?></p> 
<?php endforeach; ?> 

Но ее не работает. Даже когда я пишу что-то в phtml, кроме цикла, это тоже не отображается.

ответ

1

Что вы предоставляете для Magento1. Ниже код будет работать на Magento2:

{{block class='Magento\\Framework\\View\\Element\\Template' area='frontend' template='Magento_Sales::order/email/ordercomments.phtml' order=$order}} 

<?php 
/** @var Magento\Sales\Model\Order $order */ 
$order = $this->getOrder(); 
if(count($order->getVisibleStatusHistory())>0){ 
    /** @param \Magento\Sales\Model\Order\Status\History $history */ 
    foreach($order->getVisibleStatusHistory() as $history){ 
     echo "". $history->getComment() . "<br/>"; 
    } 
} 
1

С Magento 2, вы можете создавать шаблоны PHTML для транзакционных сообщений электронной почты и использовать переменные в этих шаблонах:

Например, в приложение/дизайн/интерфейс/Vendor/тема/Magento_Sales/электронная почта/shipment_new_guest.html

Поместите этот код:

{{block class='Magento\\Framework\\View\\Element\\Template' area='frontend' template='Magento_Sales::email/shipment/track.phtml' shipment=$shipment order=$order customMessage="You can follow the delivery progress using the following tracking number."}} 

Я добавил customMessage

В приложение/дизайн/интерфейс/Vendor/темы/Magento_Sales/шаблоны/электронной почты/отправки/track.phtml

Вы можете получить переменные и работать в шаблоне PHP:

<?php $_shipment = $block->getShipment() ?> 
<?php $_order = $block->getOrder() ?> 
<?php $_customMessage = $block->getData("customMessage") ?> 
<?php if ($_shipment && $_order && $_shipment->getAllTracks()): ?> 
    <?php if ($_customMessage) : ?> 
     <tr> 
      <td height="10" class="row-separator">&nbsp;</td> 
     </tr> 
     <tr> 
      <td> 
       <p class="center"> 
        <?php echo /* @escapeNotVerified */ __($_customMessage); ?> 
       </p> 
      </td> 
     </tr> 
    <?php endif; ?> 
    <tr> 
     <td height="30" class="row-separator">&nbsp;</td> 
    </tr> 
     <tr> 
     <th class="center"> 
      <?php echo /* @escapeNotVerified */ __('Tracking number'); ?>: 
     </th> 
    </tr> 
    <tr> 
     <td height="20" class="row-separator">&nbsp;</td> 
    </tr> 
    <tr> 
     <td> 
     <?php foreach ($_shipment->getAllTracks() as $_item): ?> 
      <p class="center"> 
       <strong><?= /* @escapeNotVerified */ __('Shipped By') ?></strong>: <?= $block->escapeHtml($_item->getTitle()) ?> 
      </p> 
      <p class="center"> 
       <strong><?= /* @escapeNotVerified */ __('Tracking Number') ?></strong>: <?= $block->escapeHtml($_item->getNumber()) ?> 
      </p> 
     <?php endforeach ?> 
     </td> 
    </tr> 
    <tr> 
     <td height="30" class="row-separator row-hr">&nbsp;</td> 
    </tr> 

<?php endif; ?> 
0

Как Петля значение в Magento 2 Email Шаблон (обработка значений массива в пользовательских шаблонов электронной почты)


1. Добавить файл макета в модуле: yourmodule/вид/интерфейс/макет/email_product_list.xml

<?xml version="1.0"?> 
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" label="Email Product List" design_abstraction="custom"> 
    <body> 
     <block class="Magento\Framework\View\Element\Template" name="additional.product.info" template="email/product.phtml"/> 
    </body> 
</page> 

2. Создайте файл PHTML в:yourmodule/view/frontend/template/email/product.phtml

<?php $items = $block->getItems() ?> 
<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> 
    <tbody> 
    <?php foreach ($_items as $_item): ?> 
     <tr> 
      <td>$item->getName()</td> 
      <td>$item->getSku()</td> 
      <td>$item->getPrice()</td> 
     </tr> 
    <?php endforeach; ?> 
    </tbody> 
</table> 

3. Наконец, добавьте этот код в вашей электронной почте шаблона:

{{layout handle="email_product_list" items=$items area="frontend"}} 

Примечание:Ваша переменная шаблонаitemsдолжен быть объектом.

 Смежные вопросы

  • Нет связанных вопросов^_^