Betaalde feature

Het betreft hier een betaalde feature, bekijk de Datafeeds App in de store om toegang te krijgen tot deze oplossing.

Impact op de verzendsnelheid

Deze Smarty oplossing kan impact hebben op de verzendsnelheid in het geval bij gepersonaliseerde feed in een batch verzending of als de feed teveel MB is. Een alternatief is om de gegevens van te voren in te laden in het datamodel en deze te gebruiken om de gegevens te tonen in de e-mail. 

Met de functie getRss kan een externe XML/RSS feed worden opgehaald bij het renderen van de e-mail, bijvoorbeeld om filiaal, gepersonaliseerde productadvies of algemene productgegevens te tonen in de e-mail.  

getRss

{{getRss assign='<Naam>' link='<URL>'}}

Goed om te weten

De getRSS smarty functie ondersteund geen argumenten welke zijn opgenomen in het XML element, zoals in het onderstaand voorbeeld "naam";

<element naam="Test">

Argumenten

De volgende argumenten kunnen worden gebruikt bij deze functie:

ArgumentToelichting
assign

De variabele naam waarin het resultaat van de feed beschikbaar gesteld moet worden


linkDe link naar de RSS of XML bron
limitHet maximaal aantal elementen welke opgehaald worden op het eerste niveau van de feed
cancelonfail

Als een fout optreed bij het inladen van de RSS feed, dan kan met dit argument aangegeven worden of de verzending geannuleerd moet worden voor alle resterende klanten in de selectie of dat de verzending door moet gaan met een lege variabele. Standaard zal de verzending voor alle resterende klanten worden geannuleerd.

De volgende waardes kunnen gebruikt worden:

  • true:  bij RSS fout, annuleer de rest van de verzending
  • false: bij RSS fout, negeer de foutmelding en geef de variabele leeg terug

Voorbeelden

Hieronder een voorbeeld in combinatie met een producten feed welke wordt opgehaald met behulp van de Datafeeds app, daarbij wordt gebruikt gemaakt van de onderstaande XML;

XML productenfeed
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<item>
<id>1</id>
<title>Home loungeset Cardona</title>
<category>Tuinset</category>
<url>https://example.org/first-item</url>
<image>https://example.org/first-item.png</image>
<price>599.00</price>
<availability>In Stock</availability>
</item>
<item>
<id>2</id>
<title>Home loungeset Örebro</title>
<category>Tuinset</category>
<url>https://example.org/second-item</url>
<image>https://example.org/second-item.png</image>
<price>279.00</price>
<availability>In Stock</availability>
</item>
<item>
<id>3</id>
<title>Home loungeset Claire</title>
<category>Tuinset</category>
<url>https://example.org/third-item</url>
<image>https://example.org/third-item.png</image>
<price>479.00</price>
<availability>Sold out</availability>
</item>
</channel>
</rss>

Hierbij wordt gecontroleerd of er producten aanwezig zijn in de feed en of er in de producten een verkoopbaar product zit, wordt er niet voldaan aan deze condities dan wordt verzending voor de gehele selectie gecanceld. In dit voorbeeld wordt naast de cancel_mail gebruikt gemaakt van de volgende smarty methodes: cancel_mail, foreach, if, empty, lower en counter:

cancel_mail bij getRSS

{{* Ophalen van een XML feed *}}
{{getRss assign='productsXML' link='https://cdn.msdp1.com/public/tpm/xml/productfeed.xml'}}

{{* Loop door de producten *}}
{{$available_products = 0 }}
{{foreach from=$productsXML.channel.0.item item=product}}
  {{if $product.availability|lower eq 'sold out'}}
   {{$product.title}} is uitverkocht.  
  {{else}}
   {{counter assign="available_products"}}
   {{$product.title}} nu verkrijgbaar!
  {{/if}}
{{foreachelse}}
   {{* In het geval dat er geen producten aanwezig zijn, cancel de verzending voor alle klanten in de selectie *}}
   {{cancel_mail for="allcustomers"}}
{{/foreach}}

{{* In het geval dat er geen verkoopbare producten aanwezig zijn, cancel de verzending voor alle klanten in de selectie *}}
{{if empty($available_products)}}
   {{cancel_mail for="allcustomers"}}
{{/if}}