#1185 closed Bug/Fehler (fixed)
nl2br() fehlt bei comments in order_mail.html u. order_mail_step.html
| Reported by: | noRiddle | Owned by: | somebody |
|---|---|---|---|
| Priority: | normal | Milestone: | modified-shop-2.0.3.0 |
| Component: | Shop | Version: | 2.0.2.2 |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: |
Description (last modified by )
In den Mail-Vorlagen order_mail.html u. order_mail_step.html sollte man diesen Code
<font size="2" face="Tahoma, Verdana, sans-serif">{$COMMENTS}</font>
ändern in
<font size="2" face="Tahoma, Verdana, sans-serif">{$COMMENTS|nl2br}</font>
damit die Anmerkungen des Kunden nicht ohne Zeilenumbrüche und aneinander geklebt in der Mail ankommen.
Gruß,
noRiddle
Attachments (0)
Change History (8)
comment:1 by , 9 years ago
| Component: | Admin → Shop |
|---|---|
| Description: | modified (diff) |
| Milestone: | → modified-shop-2.0.2.3 |
| Version: | → 2.0.2.2 |
comment:2 by , 9 years ago
comment:3 by , 9 years ago
Fast genau wegen deines letzten Satzes habe ich vorgeschlagen es im Template zu machen.
Die <br /> gehören ja nicht in Textmails, da muß es \n (bzw. LF) bleiben.
Gruß,
noRiddle
comment:4 by , 9 years ago
Es bleibt dort ja auch \n und wird nicht als <br /> in die E-Mails geschrieben.
Das Problem ist nur, dass eben zusätzliche Zeilenumbrüche in den Kommentaren entstehen.
Aus (Genau so steht es auch in der Datenbank in in der Tabelle "orders" in Spalte "orders_comments"):
Zeile 1 Zeile 2 Zeile 3
Wird dann (obwohl es keine <br /> gibt, die zu ersetzen wären):
Zeile 1 Zeile 2 Zeile 3
Wenn wir dafür noch eine Lösung finden wäre das die bessere Alternative gegenüber der Änderung im Template, wie ich finde.
Das Problem ist hier folgendes in der "/inc/xtc_php_mail.inc.php":
// decode html2txt
$html_array = array('<br />', '<br/>', '<br>');
$txt_array = array(" \n", " \n", " \n");
$message_body_plain = str_replace($html_array, $txt_array, $message_body_plain.$txt_signatur);//DPW Signatur erg‰nzt.
// remove html tags
$message_body_plain = strip_tags($message_body_plain);
$message_body_plain = html_entity_decode($message_body_plain, ENT_NOQUOTES, $lang_data['language_charset']);
if (EMAIL_USE_HTML == 'true') { // set email format to HTML
$mail->IsHTML(true);
$mail->Body = $message_body_html.$html_signatur;//DPW Signatur erg‰nzt.
$mail->AltBody = $message_body_plain;
} else {
$mail->IsHTML(false);
$mail->Body = $message_body_plain;
}
Wenn man oben die Ersetzungsarrays leer lässt, dann passt es zwar für die Kommentare, aber dann werden die AGB und das Widerrufformular hintereinander ohne Zeilenumbrüche geschrieben.
Die Texte aus dem Content Manager werden ja mit HTML Umbrüchen <br /> in die Datenbank geschrieben, während die Kommentare der Bestellung als reiner Text in die Datenbank gelangen. Ich frage mich woher die zusätzlichen Umbrüche in den Text-Mails kommen, wenn der Text aus der Spalte "orders_comments" keine <br /> enthält.
comment:5 by , 9 years ago
Siehe auch dieses Ticket:
http://trac.modified-shop.org/ticket/1113
Es fehlt uns ein html2txt Konverter
Es gibt diverse Projekte auf Github z.B.
comment:6 by , 9 years ago
Wobei der zweite Link zu GitHub wohl das deutlich aktivere Projekt zeigt.
comment:8 by , 8 years ago
| Reporter: | changed from to |
|---|

Ist es nicht einfacher die send_order.php zu modifizieren anstelle des Templates?
Suche:
$smarty->assign('COMMENTS', $order->info['comments']);Ersetze mit:
$smarty->assign('COMMENTS', nl2br($order->info['comments']));Einziger Nachteil ist dann, dass bei reinen Textmails zusätzliche Zeilenumbrüche im Kommentar erscheinen. Dafür habe ich noch keine Lösung finden können.