-
Text Template verwenden
Contao hat ein schönes Template System für HTML content.
Ich bräuchte nun aber auch ein Template für die Text-Version einer E-Mail.
Den HTML Teil der Mail erzeuge ich mit
PHP-Code:
$templateHtml = new \FrontendTemplate('mail_confirmation_html');
$templateHtml->data = $data;
$html = $templateHtml->parse();
Soweit so gut. Nun würde ich gerne in ähnlicher weise erzeugen
PHP-Code:
$templateText= new \FrontendTemplate('mail_confirmation_text');
$templateText->data = $data;
$text = $templateText->parse();
Mein Text Template würde ich ungefähr so aufbauen wollen
Code:
Hallo <?= this->data['firstname']; => <?= $this->data['lastname']; =>
Sie haben sich angemeldet zu "<?php $this->data['title']; ?>".
Mit freundlichen Grüßen
Max Mustermann
Was ist der beste Weg, dies zu erreichen? Es wäre auch schön, wenn beim Zeilenumbruch automatisch "\r\n" eingefügt wird. Die Klasse FrontendTemplate scheint hier nicht ganz passend. Gibt es vielleicht etwas geeigneteres?
-
Ich nutze jeweils einfach HTML und für die Textvariante, wandle ich HTML in Text um. Also alle Tags halt weg und <br> wird zu Newline etc.
Die Resultate sind eigentlich sehr gut, ausser du willst was komplett anderes (also den Text woanders platziert oder so), dann musst du mit einem eigenen Template arbeiten.
In haste haben wir mal so ein Helferlein eingebaut, da kannst du dir HTML ganz einfach zu Text umwandeln lassen:
PHP-Code:
<?php
use \Haste\Util\StringUtil;
....
$text = StringUtil::convertToText($html, StringUtil::NO_TAGS);
-
Danke, das ist genau, was ich brauche.
Ich habe allerdings im HTML auch einen Link, von dem in der Text-Version die URL aus dem href-Attribut ausgegeben werden sollte. Gibt es dafür auch eine Möglichkeit?
Als schnelle Lösung habe ich folgenden Absatz im HTML Template hinzugefügt:
Code:
Sollte der Link nicht angezeigt werden, rufen Sie bitte diese URL in Ihrem Browser auf:<br>
http://www.test.de
Ansonsten würde mir noch einfallen, im Template einen Platzhalter einzufügen, z.B. [LINK], und diesen dann per String replace in $html und $text zu ersetzen.