Web-Shop » modified eCommerce » Dokumente aus dem Shop

Rechnung, Eingangsbestätigung und andere Formulare

Print-Formulare allgemein

Für die Print-Formulare sind einige Besonderheiten zu beachten. HTML ist an sich nicht für ein bestimmtes Ausgabemedium gedacht. Die Ausgabe sollte sich an das jeweilige Medium anpassen. Wie so oft, unterscheidet sich auch hier die Theorie von der Praxis. Für den Druck sind einige Parameter wie die Papiergröße zu beachten.

Per Mail an den Kunden

Zwar ist HTML inzwischen auch für Mail-Clients zum Standard geworden, dennoch gibt es einige Besonderheiten. Beispielsweise gibt es Sicherheitseinstellungen, die das Nachladen externer Inhalte verhindern. Dazu gehören zum Beispiel Bilder, wie ein Firmenlogo, aber auch Formatierungsanweisungen per CSS.

Andererseits existiert die Meinung, eine Mail mit angehängtem Bild führe dazu, dass die Mail eher als Spam deklariert wird.

Umsetzung in der modified eCommerce Shopsoftware

Ausgangspunkt meiner Betrachtungen ist die Version 2.0.2.2 mit dem Template tpl_modified.

Die oben genannten Besonderheiten sind nicht perfekt umgesetzt bzw. inzwischen ein wenig überholt. Dazu entwickle ich hier einen Lösungsvorschlag.

Mails aus Front- und Backend

Hier habe ich zunächst einen Header angelegt, um Style-Angaben zentral unterzubringen.

TEMPLATE/mail/header.html

Anschließend habe ich (fast) alle .html-Dateien in den Verzeichnissen

TEMPLATE/mail/SPRACHE
TEMPLATE/admin/mail/SPRACHE

angepasst. Fast, weil nicht alle ein Logo oder eine Breitenangabe in px enthielten.

 

#####################

Dazu ist es hilfreich, die Templates den aufrufenden Programmen zuzuordnen, um die Umsetzung zu strukturieren. Dazu notiere ich jeweils eine mit # beginnende Zeile mit dem Programmnamen und danach den Aufruf des Templates.

Einzelheiten meiner Änderungen habe ich beim jeweiligen Template dokumentiert.

Frontend / Shop

Eingangsbestätigung für den Kunden

#  /checkout_process.php
# /send_order.php
$html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$order->info['language'].'/order_mail.html');
$txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$order->info['language'].'/order_mail.txt');

Ausdruck der Bestellung im Check-Out

#  /checkout-success.php
# /print_order.php $smarty->display(CURRENT_TEMPLATE.'/module/print_order.html');

Hier habe ich eine feste Größe für das Firmenlogo eingeführt. Das erlaubt mir, ein größeres Bild einzubauen und damit bekomme ich auch im Druck eine vernünftige Auflösung. Handelsübliche Drucker haben heute eine Auflösung von 600 dpi, also letztlich 600 Pixel pro Zoll. Ein Bild, das auf dem Bildschirm recht ordentlich aussieht, ist im Druck schon sehr grob gerastert.

Außerdem gefiel mir die vertikale Zentrierung in der Liste der gekauften Artikel nicht. Ich hätte gerne Anzahl, Artikelnummer und Preise in einer Zeile, die Umbrüche in der Bezeichnung reißen dann nach unten aus. Eine verbesserte Ausrichtung der Tabelle verhindert auch Umbrüche in der Artikelnummer oder im Preis zur Währung.


 

Backend / Bestellungen bearbeiten

Auftragsbestätigung

#  /admin/orders.php
$html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$order->info['language'].'/change_order_mail.html');

Lieferschein

#  /admin/orders.php
# /admin/print_packingslip.php
$smarty->display(CURRENT_TEMPLATE . '/admin/print_packingslip.html');

Rechnung

#  /admin/orders.php
# /admin/print_order.html
$html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$order->info['language'].'/order_mail.html');

Theorie:

Nachdem ich mich ausführlicher über die Maßeinheiten im CSS informiert habe, bin ich einen Schritt weiter bezüglich der abgeschnittenen Ränder.

Mit dem neuen Template tpl_modified ab Version 2.0 wurde eine feste Breite von 700px in die Mails gebaut, den Grund kenne ich nicht. Tatsache ist, dass die Einheit px für Print suboptimal ist.

Als alter Knabe hing ich noch der ursprünglichen Definition eines Pixels nach, musste aber feststellen, dass diese Definition überholt ist. Die Einheit bedeutet aktuell "The px unit is defined to be small but visible". Weiter heißt es: "In fact, CSS requires that 1px must be exactly 1/96th of an inch in all printed output."

Das bedeutet für unsere Mails, dass eine Druckbreite von 700 / 96 * 2,54 = 18,52cm definiert wurde, was bei einer Papierbreite von 21cm eigentlich passen sollte. Nun gibt es aber auch noch voreingestellte Ränder bei den diversen Druckern, in Druckertreibern und weiß der Teufel wo noch. Dazu gibt es natürlich noch die unterschiedlichen Implementierungen von HTML und CSS in den diversen Mailclients.

Fakt ist, dass auf meinem System, egal wie ich es versuche, der Ausdruck funktioniert. Der Betreiber des Shops schwört, dass ihm der rechte Rand abgeschnitten wird.

Weiterführende Informationen

w3

Designing for Print with CSS

SelfHtml, Physische Längenmaße

Powered by Etomite CMS.