이메일 템플릿에 foreach 루프를 추가하는 방법이 있습니까?


10

고객이 주문한 후 우편을 보내려고합니다. 이 이메일에는 주문한 제품의 모든 교차 판매 제품이 포함됩니다.

다음 링크를 참조로 사용했습니다.

이벤트 관찰자를 사용하여 이메일 보내기

고급 거래 이메일 템플릿

모두 잘 작동합니다.

그러나 이제 내 의심은 로케일 디렉토리에 있는 html 파일 내부에서 foreach 루프를 사용할 수 있습니까?

메일 템플릿의 모든 제품 정보를 반복하고 인쇄 할 수있었습니다. 누구든지 도울 수 있습니까?

답변:


21

이메일에서 foreach 루프를 직접 수행하는 것은 불가능하지만 일반적인 템플릿에서 루프를 수행하는 블록을 포함시키는 것이 가능합니다.

이메일에 다음과 같은 것을 추가하십시오.

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

그런 다음 템플릿에 다음을 추가하십시오.

<?php foreach ($this->getItems() as $_item): ?>
    <p><?php echo $_item['name'] ?></p>
<?php endforeach; ?>

자세한 내용은이 블로그를 따라


Ya 나는 실제로 이것을 시도하고 있었다. 2 분 안에 이것을 받아 들일 것입니다
Shathish

이메일 템플릿 안에이 블록을 추가해야합니까? 그리고 이해 items=$items할까요? $itemsPHP 변수와 마찬가지로 .
Akshay Taru

안녕, 위의 나를 위해 작동하지 않았다. 어떤 제안
Akshay Taru

0

실제로 이메일에서 for 루프를 사용할 수 있습니다. 2.3.3 버전에서 테스트했습니다. 검사 할 코드 위치 입니다. 템플릿에서 다음과 같이 보입니다.

<ul>
  {{for item in data.items}}
     <li>Name: {{var item.name}}</li>
  {{/for}}
</ul>

운송 정보 :

$this->transportBuilder->setTemplateVars(
[
 'items' => [
              ['name' => 'Product1'],
              ['name' => 'Product2']
            ]
...

곁에. 2.3.4에서는 코드가 리팩토링 되었지만 제거되지 않았으므로 여전히 작동해야한다고 생각합니다. Magento는이 버전을 기준으로 객체에서 함수를 호출하는 기능을 제거 했으므로 order->getItems()기능이 작동하지 않을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.