2013-05-17 8 views
10

Muszę dokonać zamiany na merge_vars.Jak wyrenderować listę z szablonem Mandrill poza tablicą przekazaną w MERGE VARS

{ 
    "key":"some key", 
    "template_name":"order-confirmation", 
    "template_content":[ 
     { 
     "name":"ORDERNUMBER", 
     "content":"12312312321" 
     }, 
     { 
     "name":"PRICE", 
     "content":"35.10" 
     }, 
     { 
     "name":"NAME", 
     "content":"Some name" 
     }, 
     { 
     "name":"PICKUPDATE", 
     "content":"2013-05-10" 
     }, 
     { 
     "name":"ORDERITEMS", 
     "content":[ 
      { 
       "NUMPRODUCTS":"26", 
       "PRODUCTNAME":"Milk", 
       "PRODUCTPRICE":"1.35 EUR" 
      } 
     ] 
     }, 
     { 
     "name":"SERVICENUMBER", 
     "content":"12345" 
     }, 
     { 
     "name":"PICKUPPOINT", 
     "content":"AAA 350" 
     }, 
     "message":{ 
     "from_email":"[email protected]", 
     "to":[ 
      { 
       "email":"[email protected]" 
      } 
     ], 
     "subject":"Subject text", 
     "attachments":[ 

     ] 
     }, 
     "async":false 
    } 
} 

Jak utworzyć znaczniki html? Zrobiłem to w ten sposób, ale to nie działa. Interesuje mnie tylko ORDERITEMS.

<tr> 
<td>*|ORDERITEMS:NUMPRODUCTS|*</td> 
<td>*|ORDERITEMS:PRODUCTNAME|*</td> 
<td>*|ORDERITEMS:PRODUCTPRICE|*</td> 
</tr> 
+0

czy próbowałeś *** var api = new MandrillApi (ApiKey); var resultRender = api.Render (templateExample, templateContent, null); *** – Kiquenet

Odpowiedz

8

O ile mi wiadomo, używając normalnego silnika szablonów w Mandrill, jedyny obsługiwany typ atrybutu content jest string, więc nie ma sposobu, aby zapewnić strukturę.

Niedawno, (13 stycznia 2015) Mandrill ogłosił wsparcie dla szablonów kierownicy, a wraz z tym możliwość włączenia tablic w content.

http://blog.mandrill.com/handlebars-for-templates-and-dynamic-content.html

Z tego nowego języka szablonu możliwe jest nie tylko dostęp do sub-propertys jak trzeba, ale nawet wewnątrz pętli tablic, a nawet zrobić zagnieżdżone pętle. (Patrz this comment na blogu)

To jest przykład wyciąg z blogu za robienie pętlę:

Zmienna seryjnej lub szablon zawartości:

{ 
    "name": "products", 
    "content": [ 
     { 
      "img": "http://kbcdn.mandrill.com/nesting-penguin.png", 
      "qty": 2, 
      "sku": "PENG001", 
      "name": "Penguin", 
      "description": "Solid wood, hand-painted penguin nesting doll with 5 different sizes included. Limited Edition.", 
      "price": "12.99", 
      "ordPrice": "25.98" 
     }, 
     { 
      "img": "http://kbcdn.mandrill.com/nesting-bear.png", 
      "qty": 3, 
      "sku": "BBEAR001", 
      "name": "Brown bear", 
      "description": "Solid wood, hand-painted brown bear nesting doll. Coordinates with our entire Bear collection. Includes 6 nested sizes.", 
      "price": "12.99", 
      "ordPrice": "38.97" 
     } 
    ] 
} 

I to jest jak spożywać to w szablonie:

{{#each products}} 
<tr class="item"> 
    <td valign="top" class="textContent"> 
     <img src="{{img}}" width="50" height="75" class="itemImage" /> 
     <h4 class="itemName">{{name}}</h4> 
     <span class="contentSecondary">Qty: {{qty}} x ${{price}}/each</span><br /> 
     <span class="contentSecondary sku"><em>{{sku}}</em></span><br /> 
     <span class="contentSecondary itemDescription">{{description}}</span> 
    </td> 
    <td valign="top" class="textContent alignRight priceWidth"> 
     ${{ordPrice}} 
    </td> 
</tr> 
{{/each}} 

w Twoim przypadku, można zrobić:

{{#each ORDERITEMS}} 
<tr> 
<td>{{NUMPRODUCTS}}*</td> 
<td>{{PRODUCTNAME}}</td> 
<td>{{PRODUCTPRICE}}</td> 
</tr> 
{{/each}}