Voorbeeld
Dit document toont een praktisch voorbeeld om Smarty effectief te gebruiken in combinatie met een Magento integratie, om zo een gepersonaliseerde e-mail te sturen met de details van een gemaakte bestelling. Lees het tips & tricks artikel over Smarty voor meer uitleg over gebruikte technieken in dit voorbeeld.
Databasestructuur
In dit voorbeeld gebruiken we een eenvoudige database en collectie voor het bijhouden van klanten en bestellingen:
- Database
Klanten
bevat gegevens over de klant (in elk geval een e-mailadres) - Collectie
Orders
bevat het bestelnummer van de bestelling in Magento
De database kan uiteraard nog veel meer gegevens bevatten, maar voor dit voorbeeld zijn dit de gegevens die we willen gebruiken. Overigens, in dit voorbeeld richten we ons enkel op de Smarty-personalisatie. Hoe de database wordt gevuld of gesynchroniseerd valt buiten de reikwijdte van dit artikel.
Template
Om met de gegevens uit de database een orderbevestiging te sturen heb je
een ordernummer nodig. Dit staat opgeslagen in de Orders
collectie. Hieruit pakken
we het laatste subprofiel om een orderbevestiging te sturen over de meest recente
bestelling.
<!-- haal het laatste subprofiel met een bestelling op -->
{assign var="subprofile" value=$profile.Orders|last}
<!-- haal de bestelling met het bestelnummer uit het subprofiel -->
{assign var="order" value=$webshop.order[$subprofile.order_id]}
Nu kunnen we de variabele {$order}
gebruiken om gegevens van de bestelling op te
vragen bij de Magento webshop. We kunnen hier ook gelijk gegevens over de klant
opvragen:
Beste {$order.customer.name.firstname|escape},
Hierbij een bevestiging van uw bestelling op {$order.created_at|date_format:'d M Y'} met bestelnummer
{$order.entity_id}. De totaalprijs is {$order.grand_total}.
Hierboven zie je hoe we allerlei gegevens over de klant en de bestelling in de mailing kunnen opnemen, terwijl in de database alleen maar een bestelnummer is opgeslagen. De gegevens worden bij het verzenden van de mail automatisch ingeladen vanuit de Magento webshop.
Natuurlijk willen we de klant een overzicht geven van de producten die hij/zij
besteld heeft. Om dit te doen, itereren we over de items
eigenschap die we
kunnen aanspreken op het $order
object; dit is een array waarin alle bestelde
producten staan opgeslagen. Vervolgens kunnen we voor elk item verschillende
eigenschappen aanspreken om zo onze mail vorm te geven:
U heeft de volgende producten besteld:
<ul>
{foreach from=$order.items item='item'}
<li>
{$item.qty_ordered}x - <a href="{$item.url}">{$item.name|escape}</a>
</li>
{/foreach}
</ul>