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>