Jump to content

Velden in email templates


Recommended Posts

Ik heb reeds aardig wat afgezocht en uitgeprobeerd, maar kom er echt niet uit helaas. Wat ik wil doen is het volgende:

Graag zou ik een aantal email templates toevoegen of veranderen, zodat ik een aantal overzichten van producten, prijzen en kortingen kan sturen zoals een Offerte, Proforma factuur, bestelbevestiging etc.

 

Die laatste zit er natuurlijk al in en heet order_conf, en ook al wil ik die nog wel wat aanpassen, deze heb ik als basis genomen voor de andere templates. Maar als ik de code uit dat template wil gebruiken in bijvoorbeeld backoffice_order (logische template voor een offerte lijkt me) dan worden veel placeholders niet vervangen zoals {orders} en {delivery_block_html}

 

Waarschijnlijk, om dat de betreffende parameters niet gevuld zijn voor dat template. Ik vind dat echter raar, want als ik in de backoffice een status wijzig, dan zijn voor beide templates toch dezelfde gegevens bekend?

 

Met wat zoekwerk op google en het forum ben ik op een aantal plekken uit gekomen, maar kan niet vinden wat ik zoek:

  • AdminOrdersController.php: Ik wijzig de status in dit scherm, dus verwachtte ik daar ook de aanlevering van de variabelen. Ik kan echter geen backoffice_order template afhandeling vinden hier?
  • Mailalerts.php: Wellicht dat deze de afhandeling doet van de mails. Het lijkt er alleen op dat deze alleen de via de database configureerbare teksten mailt?
  • PaymentModule.php: Omdat de forum resources hier naar wijzen. Ik heb rond regel 705 (PS 1.6.1.7) een array gevonden met alle variabelen, maar, daar zitten óók alle variabelen bij die ik juist niet gevuld krijg, zoals {delivery_block_html}.

Dus ik weet het even niet meer eigenlijk :)

  • Ik snap niet zo goed waarom de aangeleverde variabelen niet voor alle templates gelijk zijn. Dat zou het een stuk makkelijker maken.
  • Het lijkt er op dat de mailfunctionaliteit over veel modules verspreid is. Volgens mij zou het voor moeten kunnen komen dat als je in de admin je template goed werkend hebt, dat deze vanuit de klant geïnitieerd tóch problemen geeft. Dat lijkt wat vreemd.

Ik zie vast iets over het hoofd, en zou graag begrijpen hoe dit onder water werkt. Kan iemand me helpen?

 

Alvast bedankt voor de hulp en de genomen moeite!

 

 

 

Link to comment
Share on other sites

Beste,

 

Emails in Prestashop worden verstuurd door het aanroepen van de functie Send in de Class Mail (public static function Send()).

Als je deze signatuur van de send functie bekijkt zul je zien dat je steeds extra variabelen ($template_vars) kunt meegeven die je vervolgens ook kunt gebruiken in de email die je verstuurt naar de klant.

/**
     * Send Email
     *
     * @param int $id_lang Language of the email (to translate the template)
     * @param string $template Template: the name of template not be a var but a string !
     * @param string $subject
     * @param string $template_vars
     * @param string $to
     * @param string $to_name
     * @param string $from
     * @param string $from_name
     * @param array $file_attachment Array with three parameters (content, mime and name). You can use an array of array to attach multiple files
     * @param bool $modeSMTP
     * @param string $template_path
     * @param bool $die
     * @param string $bcc Bcc recipient
     */
    public static function Send($id_lang, $template, $subject, $template_vars, $to,
        $to_name = null, $from = null, $from_name = null, $file_attachment = null, $mode_smtp = null,
        $template_path = _PS_MAIL_DIR_, $die = false, $id_shop = null, $bcc = null, $reply_to = null)
    {

Hopelijk vormt dit een antwoord op jouw probleem.

 

Prestaking.eu

Link to comment
Share on other sites

Dat had ik inderdaad al gezien dat de centrale mail functie wordt gebruikt. De vraag is echter: waarom geeft niet iedere template dezelfde waarden door, en waar kan ik het vullen van de variabelen voor de verschillende templates vinden?

Een concreet voorbeeld: ik kan werkelijk niet vinden, waar de variabelen voor "backoffice_order" worden gevuld?

 

Qua logica:

Eigenlijk zou het andersom moeten zijn: als een template verwijst naar velden uit een bestelling / klant / etc categorie, dan zou de parser moeten weten hoe deze informatie op te halen is. Ik werk veel met SilverStripe, wat zeer modulair is opgebouwd, en PrestaShop lijkt een soort omgekeerde logica te gebruiken waarin logica verspreid over de gehele code uiteindelijk tot hetzelfde resultaat moet leiden.

 

Maar goed, dat is ontwerp, en gaat toch nooit veranderen. SilverStripe heeft weer geen fatsoenlijke shop mogelijkheden :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...