Trade Republic - Provisionsfrei Aktien handeln
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Adminbereich - Button Auftragsbestätigung ändern für weitere Email Templates

    homer1968

    • Mitglied
    • Beiträge: 177
    Hi,

    vielleicht habe ich auch einmal eine Idee.

    Dazu eine Frage:
    In der SP1 wir im Adminbereich der "neue" Auftragsbestätigungsbutton angezeigt.
    Bitte sagt mir doch kurz, an welcher Stelle im Quellcode festgelegt ist, dass beim Drücken dieses Buttons die "order_mail.html" bzw. die "order_mail.txt" verschickt werden soll.
    Lieben Dank
    oli

    EDIT: Dateiname wurde korrigiert.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=16202.0

    homer1968

    • Mitglied
    • Beiträge: 177
    Code: PHP  [Auswählen]
    <!-- //BOF - web28 - 2010-03-20 - Send Order by Admin -->
        <a class="button" href="<?php echo xtc_href_link(FILENAME_ORDERS, xtc_get_all_get_params(array ('oID', 'action')).'oID='.$_GET['oID'].'&action=send&sta=0&stc=1&site=1'); ?>"><?php echo BUTTON_ORDER_CONFIRMATION; ?></a>
            <!-- //EOF - web28 - 2010-03-20 - Send Order by Admin -->

    Leider habe ich wenig Ahnung von PHP.
    Der Code ist ein Auszug aus der "/admin/orders.php".
    Hier müsste die Information enthalten sein, die Seite neu zu laden und eine Email los zu schicken.
    Ich denke hier ist die Info für das Verschicken:

    Code: PHP  [Auswählen]
    '&action=send&sta=0&stc=1&site=1'

    An welcher Stelle wird denn definiert, welche Email verschickt werden soll (hier die "order_mail.html")?

    Grüße
    oli

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo homer1968,

    so einfach ist das nicht...
    Der Teil der sagt das eine neue Email geschickt werden soll ist in "/admin/orders.php" ab Z.124:

    Code: PHP  [Auswählen]
        case 'send':
          // set dirs manual
          $smarty->template_dir = DIR_FS_CATALOG.'templates';
          $smarty->compile_dir = DIR_FS_CATALOG.'templates_c';
          $smarty->config_dir = DIR_FS_CATALOG.'lang';
          $send_by_admin = true;
          $insert_id = xtc_db_prepare_input($_GET['oID']);
          define('SEND_BY_ADMIN_PATH', DIR_FS_CATALOG);
          require_once(DIR_FS_CATALOG.DIR_WS_CLASSES.'xtcPrice.php');
          require_once(DIR_FS_INC.'xtc_href_link_from_admin.inc.php'); //-web28 - 2011-01-20 - LINKFIX
          include (DIR_FS_CATALOG .'send_order.php');
          break;

    Diese startet dann die "send_order.php" die dann in Z.152, 153 die Vorlagen definiert:

    Code: PHP  [Auswählen]
      $html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.html');
      $txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.txt');

    und in Z.164 sendet:

    Code: PHP  [Auswählen]
      xtc_php_mail(EMAIL_BILLING_ADDRESS,...

    Du müsstest dann eine Weiche bauen die eine andere Vorlage nimmt...
    Aber wenn Du wenig Ahnung von PHP hast wird das schwierig werden.

    Viele Grüße

    Franky

    homer1968

    • Mitglied
    • Beiträge: 177
    Lieben Dank für die Info.

    Wie aufwendig ist denn so eine Weiche?
    Mit der wären doch alle Probleme mit Auftragsbestätigungen gelöst.
    "order_mail.html" automatisch und ohne Zahlungsinformationen und dann die zweite z.B. "order_mail_confirmation.html" manuell mit Zahlungsinfos.
    Der Button ist ja mit der SP1 schon da.

    Ich brauch das ohne großartige PHP-Kenntnisse nicht versuchen, oder?
    Grüße
    oli

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo homer1968,

    ich schreibe Dir sicherlich nicht vor was Du versuchen solltest und was nicht! ;)

    Ich versuch mal was Schnelles was natürlich noch verbessert werden kann...

    Das was Du ja schon gefunden hast:

    Code: PHP  [Auswählen]
        <!-- //BOF - web28 - 2010-03-20 - Send Order by Admin -->
            <a class="button" href="<?php echo xtc_href_link(FILENAME_ORDERS, xtc_get_all_get_params(array ('oID', 'action')).'oID='.$_GET['oID'].'&action=send&sta=0&stc=1&site=1'); ?>"><?php echo BUTTON_ORDER_CONFIRMATION; ?></a>
                <!-- //EOF - web28 - 2010-03-20 - Send Order by Admin -->

    ändern in das:

    Code: PHP  [Auswählen]
        <!-- //BOF - web28 - 2010-03-20 - Send Order by Admin -->
            <a class="button" href="<?php echo xtc_href_link(FILENAME_ORDERS, xtc_get_all_get_params(array ('oID', 'action')).'oID='.$_GET['oID'].'&action=send&sta=0&stc=1&site=1&email_tpl=EMAIL_TEMPLATE'); ?>"><?php echo BUTTON_ORDER_CONFIRMATION; ?></a>
                <!-- //EOF - web28 - 2010-03-20 - Send Order by Admin -->

    (das EMAIL_TEMPLATE ersetzen durch den Template Dateinamen)

    Dann würde ich das:

    Code: PHP  [Auswählen]
          include (DIR_FS_CATALOG .'send_order.php');

    so ändern:

    Code: PHP  [Auswählen]
          include (DIR_FS_CATALOG .'send_order.php?email_tpl='.$_GET['email_tpl']);

    und das:

    Code: PHP  [Auswählen]
      $html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.html');
      $txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.txt');

    ändern in:

    Code: PHP  [Auswählen]
      if (isset($_GET['email_tpl']) && $_GET['email_tpl'] != "") {
        $html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/'.$_GET['email_tpl'].'.html');
        $txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/'.$_GET['email_tpl'].'.txt');
      } else {
        $html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.html');
        $txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.txt');
      }

    Dann solltest Du nur noch die Dateien anlegen die Du versenden willst und so benennen wie oben das EMAIL_TEMPLATE...

    Vorher Sicherheitskopie ist nämlich ungetestet! :)

    Wenn es klappt wäre es schön, wenn Du mir die Arbeit abnimmst und das ganze nochmal hier mit Zeilennummern und Dateinamen postest! ;)

    Viele Grüße

    Franky

    homer1968

    • Mitglied
    • Beiträge: 177
    Lieben Dank!
    Ich teste das morgen, Wenn das funktioniert dann schreibe ich eine Einbauanleitung, die sich gewaschen hat!
    Lieben Dank noch einmal und bis morgen.
    oli

    web28

    • modified Team
    • Beiträge: 9.404
    Warum so kompliziert?

    Es genügt eine Änderung in der "send_order.php"

    Diesen Code

    Code: PHP  [Auswählen]
    $html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.html');
        $txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.txt');

    hiermit ersetzen:

    Code: PHP  [Auswählen]
    if ($send_by_admin) {
        $html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail_admin.html');
        $txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail_admin.txt');
      } else {
        $html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.html');
        $txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.txt');
      }

    Und natürlich die neuen Emailvorlagen erstellen ("order_mail_admin.html" und "order_mail_admin.txt").

    Gruss Web28

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo web28,

    an die Lösung hatte ich auch gedacht, wollte es aber flexibel halten damit man mehrere Vorlagen nutzen kann und das evtl. was für zukünftige Verbesserungen des Shops wäre...

    PS: Darum auch die Frage ob homer1968 als Gegenleistung eine Anleitung schreibt! ;)

    Viele Grüße

    Franky

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.373
    • Geschlecht:
    Wäre auch super, wenn das Thema hier dann noch ein wenig aussagekräftiger benannt werden würde, damit man gleich weiss worum es geht! ;-)

    Grüße

    Torsten

    homer1968

    • Mitglied
    • Beiträge: 177
    ... ich baue die Anleitung. Hab's versprochen. Muss nur noch vorher eine andere Baustelle beheben. :-)

    homer1968

    • Mitglied
    • Beiträge: 177
    Tag Ihr,

    ich hab da noch eine Rückfrage bezüglich der Erstellung der Anleitung.
    In meinen Augen macht es Sinn, das Modul "MODUL: Sendungsverfolgung (Track and Trace)" bzw. "MODUL: Track and Trace und E-Mail Templates pro Status" einzubauen, um möglichst viele Eventualitäten aus dem Adminbereich heraus abdecken zu können.

    Dabei ist mir folgendes aufgefallen:
    Im Adminbereich "Bestellungen" gibt es einen Button "Aktualisieren", um z.B. einen neuen Status festzulegen und an den Kunden zu senden.

    Bei meinen bescheidenen PHP-Kenntnissen denke ich, dass dieser Quellcode in der "/admin/orders.php" da mitspielt:

    Code: PHP  [Auswählen]
    value="<?php echo BUTTON_UPDATE;?>"

    Für oben genanntes Modul wird dieser Codeschnipsel ebenfalls verwendet. Er ist also nach dem Moduleinbau zweimal vorhanden.

    Klickt man nun nach dem Moduleinbau auf den Aktualisierungs-Button des Moduls "Track and Trace", werden brav die Sendungsverfolgungsziffern in die vorhandene Tabelle eingefügt. Also alles ok.

    Jedoch übernimmt der 2. Button „Aktualisieren“, der für die Stati und die Kommentare an den Kunden eingesetzt wird, nun die gleiche Funktion, Aktualisiert also nicht die Stati und schickt gegebenenfalls eine Email an den Kunden, sondern trägt eine weitere Zeile in die Sendungsverfolgungstabelle des Moduls "Track and Trace" ein.
    Kann man da Abhilfe schaffen?

    Liebe Grüße
    oli

    [EDIT Tomcraft 24.10.2011: Module verlinkt.]

    homer1968

    • Mitglied
    • Beiträge: 177
    ... Fehler gefunden. Ich hatte unabsichtlich einen </form> - Tag aus dem Modulcode gelöscht, als ich die Tabellenstruktur anpasste.
    Sorry!
    oli

    homer1968

    • Mitglied
    • Beiträge: 177
    Hier also die Einbauanleitung und die Beantwortung der Frage danach, warum diese Modifikation sinnvoll sein könnte.
    Folgendes  Szenario ist nach der Übertragung der Bestelldaten durch den Kunden am Ende des Bestellvorgangs  wünschenswert:

    1.   Automatische Bestätigung des Bestelleingangs. Hier dürfen keine Informationen bezüglich der Bezahlung enthalten sein, damit der Kunde nicht bereits zahlt, noch bevor die Ausführbarkeit des Auftrags geprüft wurde.
    2.   Status: Information
    Die Möglichkeit dem Kunden manuell ein Problem zu schildern oder um Rückruf zu bitten, da die Lieferung aufgrund eines unvorhersehbaren Ereignisses nicht ohne Probleme ausführbar ist. (Wird wohl eher selten eintreten, könnte hier aber berücksichtigt werden.)
    3.   Die manuelle Auftragsbestätigung. Diese sollte noch einmal alle Positionen enthalten und muss jetzt die Informationen für die Bezahlung bereitstellen.
    4.   Status: In Bearbeitung
    Fortschrittsinformation. Zum Beispiel die Info an den Kunden, dass die Sendung nun für Paketservice oder zur Abholung bereit liegt.
    5.   Status: Versendet

    Schritt 1
    In der Datei "/templates/mein_template/mail/german/order_mail.txt"  bzw "order_mail.html" die Zahlungsinformationen heraus nehmen und gegen folgenden Text einsetzen.
    Hier am Beispiel der .txt

    Code: PHP  [Auswählen]
    Hallo {$NAME},

    vielen Dank für Ihr Interesse.
    Ihre Bestellung wird derzeit geprüft. Diese Mitteilung dient als Bestätigung über den Eingang Ihres Bestellwunsches und stellt keine verbindliche Zusage dar.

    {if $COMMENTS}
    Ihre Anmerkungen:
    {$COMMENTS}
    {/if}

    Ihre bestellten Produkte zur Kontrolle

    Schritt 2
    Die Datei "/templates/mein_template/mail/german/order_mail.txt" in dasselbe Verzeichnis kopieren und in "order_confirmation_mail.txt" umbenennen.
    Die Datei "/templates/mein_template/mail/german/order_mail.html" in dasselbe Verzeichnis kopieren und in "order_confirmation_mail.html" umbenennen.

    Schritt 3
    Den Textblock

    Code: PHP  [Auswählen]
    Hallo {$NAME},

    vielen Dank für Ihr Interesse.
    Ihre Bestellung wird derzeit geprüft. Diese Mitteilung dient als Bestätigung über den Eingang Ihres Bestellwunsches und stellt keine verbindliche Zusage dar.

    {if $COMMENTS}
    Ihre Anmerkungen:
    {$COMMENTS}
    {/if}

    Ihre bestellten Produkte zur Kontrolle

    (wieder am Beispiel der .txt) ersetzen mit

    Code: PHP  [Auswählen]
    Auftragsbestätigung
    -------------------

    Hallo {$NAME},

    vielen Dank noch einmal für Ihre Bestellung.
    Hiermit bestätigen wir Ihren Auftrag und werden diesen so schnell wie möglich ausführen.
    Ihre Artikel werden nun für den Versand, gegebenenfalls für die Abholung vorbereitet.

    {$PAYMENT_INFO_TXT}

    {if $NOTIFY_COMMENTS}Anmerkungen und Kommentare zu Ihrer Bestellung:{$NOTIFY_COMMENTS}{/if}

    Bei Fragen zu Ihrer Bestellung antworten Sie bitte auf diese E-Mail.

    Ihre bestellten Produkte noch einmal zur Kontrolle

    Schritt 4
    In der "send_order.php"

    Diesen Code

    Code: PHP  [Auswählen]
    $html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.html');
    $txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.txt');

    mit dem folgenden ersetzen

    Code: PHP  [Auswählen]
    if ($send_by_admin) {
    $html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail_admin.html');
    $txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail_admin.txt');
    } else {
    $html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.html');
    $txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/order_mail.txt');
    }

    Schritt 5
    Das Modul "MODUL: Track and Trace und E-Mail Templates pro Status" einbauen.
    Dabei folgendes beachten:

    Datenbank „email_templates“ folgendermaßen modifizieren:
    (siehe Tabelle 1 - Anhang)

    und die Datenbank „order_status“ folgendermaßen:
    (siehe Tabelle 2 - Anhang)

    Schritt 6
    der letzte Code (Zitat: „Zeile 709“), der vor dem Hintergrund der Modulanleitung eingebaut werden soll, habe ich (SP1a) zwischen die folgenden Zeilen gesetzt. Bei mir ging laut Anleitung die Tabellenstruktur nicht ganz auf, weswegen ich Tabellentags löschen musste:

    Zwischen diesem Block:

    Code: PHP  [Auswählen]
    ?>
                </table>
        </td>
        </tr>

    <?php //BOF web28 2010-12-09 new table handling ?>
    </table>
    <div class="heading"><?php echo TEXT_ORDER_HISTORY; ?></div>
    <table cellspacing="0" cellpadding="2" class="table">

    und diesem:

    Code: PHP  [Auswählen]
    <?php //EOF web28 2010-12-09 new table handling ?>
          <tr>
            <td class="main">
            <table border="1" cellspacing="0" cellpadding="5">
              <tr>
                <td class="smallText" align="center"><b><?php echo TABLE_HEADING_DATE_ADDED; ?></b></td>
                <td class="smallText" align="center"><b><?php echo TABLE_HEADING_CUSTOMER_NOTIFIED; ?></b></td>
                <td class="smallText" align="center"><b><?php echo TABLE_HEADING_STATUS; ?></b></td>
                <td class="smallText" align="center"><b><?php echo TABLE_HEADING_COMMENTS; ?></b></td>
              </tr>
    <?php

    wird der Modulcode eingefügt. Achtet bitte noch einmal auf die Tabellentags vor

    Code: PHP  [Auswählen]
    <?php //BOF web28 2010-12-09 new table handling ?>

    Kann sein, dass das bei Euch etwas anders aussieht.
    Bei mir sieht das dann so aus:
    (siehe Bild 3 im Anhang)

    Schritt 7
    "/templates/mein_template/admin/mail/german/change_order_mail.txt" und die "change_order_mail.html"  3 mal kopieren und die Datei selber umbenennen, um folgende Dateien im selben Verzeichnis zu haben:

    change_order_mail_tracking.txt
    change_order_mail_tracking.html 
    (Siehe hier Position 5 ganz oben:  Status versendet)

    change_order_mail_pending.txt   
    change_order_mail_pending.html
    (Nötig für die Bezeichnung “offen” der Bestellung direkt nachdem der Kunde bestellt hat)

    change_order_mail_processing.txt
    change_order_mail_processing.html 
    (Siehe hier Position 4 ganz oben: in Bearbeitung)

    change_order_mail_info.txt
    change_order_mail_info.html
    (Siehe hier Position 2 ganz oben: Information)

    Die Bezeichnungen „versendet“, „Information“, „offen“, „in Bearbeitung“ können im Adminbereich unter Konfiguration und dann "Bestellstatus" eingegeben werden.

    Grüße
    oli

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo Zusammen,

    ich dachte es mir das nun die Lösung von web28 genommen wird weil die kürzer ist. :whistle:

    Dann wird es eben im Adminbereich keine Weiterentwicklung geben wo man mehrere Mailvorlagen nutzen kann um verschiedene Funktionen abzudecken wie z.B. Lagerliste, Kontrolliste, Bestellbestätigung etc.

    Naja, da wollte ich eigentlich mit Euch hin reiten! Egal!  ;-)  :hobbyhorse:

    Viele Grüße

    Franky

    baustelle

    • Fördermitglied
    • Beiträge: 1.622
    [...]
    Naja, da wollte ich eigentlich mit Euch hin reiten! Egal!  ;-)  :hobbyhorse:

    Nixda "egal", Werthester! Ich reite mit dir, obwohl mein Gaul auf dem Programmierpfötchen lahmt und ich nur mit dem Pferdeschwanz wedeln kann.   :-)

    Für mehr Flexibilität im Backend bin ich jederzeit zu haben! Dass es z.B. zwei order_mails geben muss, war damals ja auch ein fettes Thema von mir, und web28 hat das ratzfatz gelöst. Was nicht heisst, dass man das Ganze nicht noch ausbauen kann, bspw. mit individuellen Lösungen pro Kundengruppe etc.

    Erzähl mal - was genau schwebt dir da vor mit:

    [...] verschiedene Funktionen abzudecken wie z.B. Lagerliste, Kontrolliste, [...]

    Greets,
    Chris
    Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware
    1 Antworten
    2288 Aufrufe
    12. Juni 2012, 15:09:00 von WayneTsun
    5 Antworten
    4491 Aufrufe
    29. Oktober 2015, 15:19:43 von Tomcraft
    3 Antworten
    3257 Aufrufe
    11. Oktober 2012, 13:53:17 von kumpelmagnet
    3 Antworten
    2948 Aufrufe
    08. September 2013, 22:16:49 von hcn
               
    anything