Das Ziel: Der Text einer EMail (bei Statusänderungen) innerhalb von osCommerce soll angepasst werden.
Das Problem: osCommerce versendet EMails standardgemäß als reinen Text. Nun gibt es diverse Erweiterungen, die es uns ermöglichen, mit releativ niedrigem Aufwand auch HTML – Mails zu erstellen.
Meine genutzte osCommerce Contribution ermöglicht aber nur die Anpassung der Bestellbestätigung. Will man den Kunden per EMail über den Status der Bestellung informieren, werden wieder Text-Mails verwendet. Hier soll aber ebenfalls eine HTML – EMail mit hübschem Briefkopf versendet werden.
Wo wird die Mail erstellt?
Zuerst einmal müssen wir den Code finden, der uns die Statusmail erzeugt. Die relevante Datei ist [katalog-root]/admin/orders.php
. Den Code finden wir in dieser Datei hinter:
if ( ($check_status['orders_status'] != $status) || tep_not_null($comments)) { tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . tep_db_input($status) . "', last_modified = now() where orders_id = '" . (int)$oID . "'");
und vor:
tep_db_query("insert into " . TABLE_ORDERS_STATUS_HISTORY . " (orders_id, orders_status_id, date_added, customer_notified, comments) values ('" . (int)$oID . "', '" . tep_db_input($status) . "', now(), '" . tep_db_input($customer_notified) . "', '" . tep_db_input($comments) . "')");
Mit der Suchfunktion einer guten IDE sollten wir den für uns interessanten Bereich so schnell finden.
Wo sind die Kommentare?
Nicht vorhanden :-| Nun geht es also daran, die Codezeilen genauer unter die Lupe zu nehmen, zu kommentieren und evtl. zu separieren. Wenn wir hier zusätzlich HTML – Elemente einbringen wollen, tut das der Ãœbersicht sichtlich gut. Ein Ergebnis des formatierten Original-Codes könnte sein:
// BOF EMAIL - UPDATE ORDER $customer_notified = '0'; if (isset($HTTP_POST_VARS['notify']) && ($HTTP_POST_VARS['notify'] == 'on')) { $notify_comments = ''; if (isset($HTTP_POST_VARS['notify_comments']) && ($HTTP_POST_VARS['notify_comments'] == 'on')) { $notify_comments = sprintf(EMAIL_TEXT_COMMENTS_UPDATE, $comments) . "\n\n"; } // construct mail content // --- storename $email = STORE_NAME . "\n"; // --- seperator $email .=EMAIL_SEPARATOR . "\n"; // --- order-number $email .= EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID . "\n"; // --- account history url $email .= EMAIL_TEXT_INVOICE_URL . ' ' . tep_catalog_href_link(FILENAME_CATALOG_ACCOUNT_HISTORY_INFO, 'order_id=' . $oID, 'SSL') . "\n"; // --- order date $email .= EMAIL_TEXT_DATE_ORDERED . ' ' . tep_date_long($check_status['date_purchased']) . "\n\n"; // --- comments (see code above ) $email .= $notify_comments; // --- new status $email .= sprintf(EMAIL_TEXT_STATUS_UPDATE, $orders_status_array[$status]); // send mail tep_mail($check_status['customers_name'], $check_status['customers_email_address'], EMAIL_TEXT_SUBJECT, $email, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS); $customer_notified = '1'; } // EOF EMAIL - UPDATE ORDER
Jetzt haben wir eine gute Ausgangslage, um Änderungen und Ergänzungen am Code vorzunehmen. Um die Standard-Funktionen von osCommerce später wiederherzustellen, empfiehlt es sich an dieser Stelle ein Backup der Codezeilen anzulegen.
Wer bis zu diesem Punkt gelesen (und verstanden) hat, sollte ohne Probleme HTML – Elemente nach seinen Bedürfnissen einfügen können. Daher sei hier auf ein Code-Beispiel verzichtet, da es zu sehr auf die Anforderungen meiner osCommerce Installation eingeht.
Diesen Artikel habe ich bereits in ähnlicher Form im Februar 2007 in meinem Meta-Blog veröffentlicht. Durch die thematische Neuausrichtung zieht er nun auf ShopSeo.de um.
Oktober 31st, 2008 at 1:56 pm
Vielen Dank für diese Erläuterung … hat mir :)
Beste Grüße
Tei
September 4th, 2010 at 12:51 am
Hallo, ich habe einen OsCommerce Shop Installiert und würde gerne das DHL RETOURE Online mit einbinden hat jemand Erfahrung damit?
http://dhl.de/retoureonline es soll für die Online Retourenabwicklung genutzt werden.