Ankündigung

Einklappen
Keine Ankündigung bisher.

Anrede in E-Mail Auftragsbestätigung ändern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Anrede in E-Mail Auftragsbestätigung ändern

    Hi!

    [Punkt 1]
    Ich möchte, dass der Kunde nach dem Einkauf in der Auftragbestätigungsmail wie in der Willkommensmail mit Sehr geehrter bzw. Sehr geehrte begrüßt wird.

    Habe im Ordner email dazu die Dateien email_template_welcome.html und email_template_checkout.html aufgerufen und in der zweiten die Variable $EMAIL_GREETING, die ich in der ersten fand eingebaut.

    Beim folgenden Test, musste ich leider feststellen, dass die Variable nicht aufgelöst wurde und das in der Mail stand:

    $EMAIL_GREETING Evelyn Maier

    Wo muss diese Übergabe stattfinden?

    In der email_template_welcome.html ist diese Information ja vorhanden.

    [Punkt 2]
    Weiter unten wird dann relativ unvermittelt der Kunden-Kommentar zur Bestellung angezeigt.

    Dort hätte ich gerne einen Eintrag wie:

    Ihr Kommentar: ...

    Aber dazu bräuchte ich ja wohl irgendwo in einer Sprachdefinitonsdatei einen entsprechenden Eintrag und für die email_template_checkout.html eine vorher gesetzte Variable.

    Wie und wo muss ich vorgehen?


    [Punkt 3]
    Die beiden benannten Dateien gelten ja nur für die HTML-Mails, wie könnte ich die beiden Änderungen für Text-Mails auch umsetzen?

    #2
    Bevor du wieder denkst, ich überlese es...

    Also die eMail Geschichte ist in Zen-Cart echt nicht sehr toll gelöst. Dementsprechend ist es in meinen Augen zu umständlich dort etwas einzubauen.

    Leider hat sich bisher keiner gefunden, der diese Funktion neu aufbaut und auch die Amerikaner sind von meinem Wünschen recht unbeeindruckt :(

    Die email Funktion für den jeweiligen Textinhalt wird in verschiedenen PHP DAteien aufgebaut.

    Für deine Variable $email_greeting schau mal in includes/modules/create_account ca. Zeile 330.

    Sowas ähnliches muss dann auch in die PHP Datei für die Checkout Mail. Leider finde ich die gerade nicht so schnell.

    Zu 3)
    Der Inhalt für Text und HTML eMail wird in der Datei gemeinsam verwaltet, sollte nach änderungen also bei beiden gleich sein.

    Gruß
    MaleBorg

    Kommentar


      #3
      Du bist so ein aufmerksamer Leser, da käme ich nie auf den Gedanken!

      Habe mir jetzt mit Hilfe dieses Threads eine Hilfslösung mit Sehr geehrte/r ... zusammen gebaut.

      Und zwar so ...

      In der Datei includes/classes/order.php den Code (ca. Zeile 880)
      Code:
          //intro area
          $email_order = EMAIL_TEXT_HEADER . EMAIL_TEXT_FROM . STORE_NAME . "\n\n" .
          $this->customer['firstname'] . ' ' . $this->customer['lastname'] . "\n\n" .
          EMAIL_THANKS_FOR_SHOPPING . "\n" . EMAIL_DETAILS_FOLLOW . "\n" .
          EMAIL_SEPARATOR . "\n" .
          EMAIL_TEXT_ORDER_NUMBER . ' ' . $zf_insert_id . "\n" .
          EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n" .
          EMAIL_TEXT_INVOICE_URL . ' ' . zen_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $zf_insert_id, 'SSL', false) . "\n\n";
          $html_msg['EMAIL_TEXT_HEADER']     = EMAIL_TEXT_HEADER;
          $html_msg['EMAIL_TEXT_FROM']       = EMAIL_TEXT_FROM;
          $html_msg['INTRO_STORE_NAME']      = STORE_NAME;
          $html_msg['EMAIL_THANKS_FOR_SHOPPING'] = EMAIL_THANKS_FOR_SHOPPING;
          $html_msg['EMAIL_DETAILS_FOLLOW']  = EMAIL_DETAILS_FOLLOW;
          $html_msg['INTRO_ORDER_NUM_TITLE'] = EMAIL_TEXT_ORDER_NUMBER;
          $html_msg['INTRO_ORDER_NUMBER']    = $zf_insert_id;
          $html_msg['INTRO_DATE_TITLE']      = EMAIL_TEXT_DATE_ORDERED;
          $html_msg['INTRO_DATE_ORDERED']    = strftime(DATE_FORMAT_LONG);
          $html_msg['INTRO_URL_TEXT']        = EMAIL_TEXT_INVOICE_URL_CLICK;
          $html_msg['INTRO_URL_VALUE']       = zen_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $zf_insert_id, 'SSL', false);
      
          //comments area
          if ($this->info['comments']) {
            $email_order .= zen_db_output($this->info['comments']) . "\n\n";
            $html_msg['ORDER_COMMENTS'] = nl2br(zen_db_output($this->info['comments']));
          } else {
            $html_msg['ORDER_COMMENTS'] = '';
          }
      in diesen umgearbeitet (man beachte jeweils die Zeilen mit EMAIL_GREETING und COMMENTS_FLAG)
      Code:
          //intro area
          $email_order = EMAIL_TEXT_HEADER . EMAIL_TEXT_FROM . STORE_NAME . "\n\n" .
          EMAIL_GREETING .' '.
          $this->customer['firstname'] . ' ' . $this->customer['lastname'] . "\n\n" .
          EMAIL_THANKS_FOR_SHOPPING . "\n" . EMAIL_DETAILS_FOLLOW . "\n" .
          EMAIL_SEPARATOR . "\n" .
          EMAIL_TEXT_ORDER_NUMBER . ' ' . $zf_insert_id . "\n" .
          EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n" .
          EMAIL_TEXT_INVOICE_URL . ' ' . zen_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $zf_insert_id, 'SSL', false) . "\n\n";
          $html_msg['EMAIL_TEXT_HEADER']     = EMAIL_TEXT_HEADER;
          $html_msg['EMAIL_TEXT_FROM']       = EMAIL_TEXT_FROM;
          $html_msg['INTRO_STORE_NAME']      = STORE_NAME;
          $html_msg['EMAIL_GREETING']        = EMAIL_GREETING;
          $html_msg['EMAIL_THANKS_FOR_SHOPPING'] = EMAIL_THANKS_FOR_SHOPPING;
          $html_msg['EMAIL_DETAILS_FOLLOW']  = EMAIL_DETAILS_FOLLOW;
          $html_msg['INTRO_ORDER_NUM_TITLE'] = EMAIL_TEXT_ORDER_NUMBER;
          $html_msg['INTRO_ORDER_NUMBER']    = $zf_insert_id;
          $html_msg['INTRO_DATE_TITLE']      = EMAIL_TEXT_DATE_ORDERED;
          $html_msg['INTRO_DATE_ORDERED']    = strftime(DATE_FORMAT_LONG);
          $html_msg['INTRO_URL_TEXT']        = EMAIL_TEXT_INVOICE_URL_CLICK;
          $html_msg['INTRO_URL_VALUE']       = zen_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $zf_insert_id, 'SSL', false);
      
          //comments area
          if ($this->info['comments']) {
            $email_order .= COMMENTS_FLAG.''.zen_db_output($this->info['comments']) . "\n\n";
            $html_msg['ORDER_COMMENTS'] = COMMENTS_FLAG.''.nl2br(zen_db_output($this->info['comments']));
          } else {
            $html_msg['ORDER_COMMENTS'] = '';
          }
      Anschließend noch in der includes/languages/checkout_process.php
      Code:
      define('COMMENTS_FLAG', 'Ihre Anmerkungen und Signierwünsche: ');
      define('EMAIL_GREETING', 'Sehr geehrte/r ');
      definiert.

      Leider nicht die Unterscheidung nach Geschlecht, die ich wollte, aber besser als gar nichts und wenn man so viele Baustellen am Gang hat wie ich und außerdem die Deadline näher rückt, dann muss man manchmal mit der zweitbesten Lösung Vorlieb nehmen.

      Aber vielleicht findet sich nochmal jemand, der sein Engagement beim Thema ZC und E-Mail zeigt? Hallo! Ist da wer?

      Gruß

      Smartsoul

      Kommentar


        #4
        Hey Leute!

        Das war gerade mein 200. Beitrag in diesem Forum!!!

        Ich geb einen aus für alle, die das hier lesen!

        Gruß

        Smartsoul

        Kommentar


          #5
          Übrigens funktioniert diese Lösung sowohl für HTML als auch für Text-Mails.

          Gruß

          Smartsoul

          Kommentar


            #6
            Leider spinnen gerade ein wenig meine Testshop, so daß ich folgendes nicht testen konnte.

            Unterscheidung Geschlecht:
            In der Datei includes/languages/checkout_process.php einfügen

            Code:
            define('EMAIL_GREETING_MR', 'Sehr geehrter ');
            define('EMAIL_GREETING_MS', 'Sehr geehrte ');
            In der Datei includes/classes/order.php

            Code:
                $customer_address_query = "select c.customers_firstname, c.customers_lastname, c.customers_telephone,
                                                c.customers_email_address, ab.entry_company, ab.entry_street_address,
                                                ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_zone_id,
                                                z.zone_name, co.countries_id, co.countries_name,
                                                co.countries_iso_code_2, co.countries_iso_code_3,
                                                co.address_format_id, ab.entry_state
                                               from (" . TABLE_CUSTOMERS . " c, " . TABLE_ADDRESS_BOOK . " ab )
                                               left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id)
                                               left join " . TABLE_COUNTRIES . " co on (ab.entry_country_id = co.countries_id)
                                               where c.customers_id = '" . (int)$_SESSION['customer_id'] . "'
                                               and ab.customers_id = '" . (int)$_SESSION['customer_id'] . "'
                                               and c.customers_default_address_id = ab.address_book_id";
            ersetzen durch

            Code:
                $customer_address_query = "select c.customers_gender, c.customers_firstname, c.customers_lastname, c.customers_telephone,
                                                c.customers_email_address, ab.entry_company, ab.entry_street_address,
                                                ab.entry_suburb, ab.entry_postcode, ab.entry_city, ab.entry_zone_id,
                                                z.zone_name, co.countries_id, co.countries_name,
                                                co.countries_iso_code_2, co.countries_iso_code_3,
                                                co.address_format_id, ab.entry_state
                                               from (" . TABLE_CUSTOMERS . " c, " . TABLE_ADDRESS_BOOK . " ab )
                                               left join " . TABLE_ZONES . " z on (ab.entry_zone_id = z.zone_id)
                                               left join " . TABLE_COUNTRIES . " co on (ab.entry_country_id = co.countries_id)
                                               where c.customers_id = '" . (int)$_SESSION['customer_id'] . "'
                                               and ab.customers_id = '" . (int)$_SESSION['customer_id'] . "'
                                               and c.customers_default_address_id = ab.address_book_id";
            in der gleichen Datei

            Code:
                $email_order = EMAIL_TEXT_HEADER . EMAIL_TEXT_FROM . STORE_NAME . "\n\n" .
                $this->customer['firstname'] . ' ' . $this->customer['lastname'] . "\n\n" .
            ersetzen durch

            Code:
                $email_order = EMAIL_TEXT_HEADER . EMAIL_TEXT_FROM . STORE_NAME . "\n\n";
            	If ($customer_address->fields['customers_gender'] == 'm'){
            		$email_order .= EMAIL_GREETING_MR .' ';
            	} else {
            		$email_order .= EMAIL_GREETING_MS .' ';
            	}
                $email_order .= $this->customer['firstname'] . ' ' . $this->customer['lastname'] . "\n\n" .
            Ist allerdings ungetestet. Bitte um Rückmeldung.

            Gruß
            MaleBorg

            Kommentar


              #7
              Komme gerade nach Hause und finde Antwort auf ein paar Fragen! Super!

              Werde dann testen, was du hier gepostet hast.

              Gruß

              Smartsoul

              P.S. Ist das für Text und HTML Mails gültig?

              Kommentar


                #8
                Hallo,
                ich habe die Änderungen nach Smartsouls Anleitung durchgeführt. Leider werden hat keine Statusänderungs-Mails mehr rausgeschickt. Wenn ich z.B. den Status einer Bestellung von Warten auf verschickt ändern will (mit Kunden benachrichtigen), kommt folgende Fehlermeldung:

                Code:
                Fatal error: Cannot use object of type queryFactoryResult as array in /opt/lampp/htdocs/catalog/admin/edit_orders.php on line 186
                In Zeile 186 der edit_orders.php steht

                Code:
                zen_mail($check_status['customers_name'], $check_status->fields['customers_email_address'], EMAIL_TEXT_SUBJECT, $email, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
                Ich gehe mal davon aus, das
                Code:
                define('EMAIL_GREETING', 'Sehr geehrte/r ');
                nicht nur in includes/languages/german/checkout_process.php drinstehen muss, sondern auch in einer weiteren Datei, wo er die Texte für die Aktualisierungs-Mails holt. Richtig? Und wenn ja, welche?

                Gruß
                triparcus

                Kommentar


                  #9
                  Upps, ich stanbd auf dem Schlauch. Der Fehler lag im Modul edit_orders.

                  Kommentar


                    #10
                    Na dann bin ich ja beruhigt!

                    Gruß Smartsoul

                    Kommentar


                      #11
                      Hallo MaleBorg,
                      ein Feedback: habe das gerade so eingebaut, wie von dir beschrieben, es scheint zu funktionieren!
                      Danke
                      Klaus-Dieter

                      Kommentar


                        #12
                        Danke für die Rückmeldung.

                        Gruß
                        MaleBorg

                        Kommentar


                          #13
                          Hallo,
                          es scheint, ich bin zu blind. Bei mir (Version1.3.7) funktionierts nicht.
                          Muß ich denn in der Datei email_template_checkout.html auch noch was eingügen, und wenn ja, was? $EMAIL_GREETING geht nicht.
                          Und: Reicht es für die Modifikation der anrede die Ergänzungen von Maleborg einzubauen, oder müssen die von Smartsoul auch noch mit dazu?????
                          Helfe doch mal einer mir Cyberbaby....
                          Danke und
                          LG Puritas

                          Kommentar


                            #14
                            Hallo,
                            eine Ergänzung:
                            Mit den o.g. Änderungen wird die Textmail wunschgemäß geändert, hier erscheint also "Sehr geehrter Herr...." bzw. "Sehr geehrte Frau..."
                            Allerdings wird die HTML-Mail irgendwo anders zusammengebaut, denn wenn ich in der Datei .../order.php z.B. den Vornamen auskommentiere, wird er in der HTML-Mail trotzdem angezeigt.
                            Hat denn keiner 'ne Idee?

                            LG
                            Puritas

                            Kommentar


                              #15
                              Stimmt, meine Änderungen oben betreffen nur die TEXT EMails. Hatte ich ja wie gesagt nicht getestet.

                              Für den HTML Part bitte folgende Änderungen vornehmen:

                              In der Datei includes/classes/order.php
                              Code:
                                  $html_msg['EMAIL_FIRST_NAME'] = $this->customer['firstname'];
                                  $html_msg['EMAIL_LAST_NAME'] = $this->customer['lastname'];
                              ersetzen durch

                              Code:
                              	if ($this->customer['gender'] = "m") {
                              		$html_msg['EMAIL_GREETING'] = EMAIL_GREETING_MR;
                              	} else {
                              		$html_msg['EMAIL_GREETING'] = EMAIL_GREETING_MS;
                              	}
                              	$html_msg['EMAIL_FIRST_NAME'] = $this->customer['firstname'];
                                  $html_msg['EMAIL_LAST_NAME'] = $this->customer['lastname'];
                              Danach in der Datei includes/languages/german/checkout_process.php folgendes einfügen

                              Code:
                              define('EMAIL_GREETING_MR', 'Sehr geehrter ');
                              define('EMAIL_GREETING_MS', 'Sehr geehrte ');
                              Und zu guter Letzt noch das eMail Template verändern.
                              In der Datei email/email_template_checkout.html

                              Code:
                              $EMAIL_FIRST_NAME $EMAIL_LAST_NAME,
                              ersetzen durch

                              Code:
                              $EMAIL_GREETING $EMAIL_FIRST_NAME $EMAIL_LAST_NAME,
                              Klappt bei mir soweit, gilt allerdings nur für die Auftragsbestätigung. Damit das auch in allen anderen eMail benutzt wird müssen noch einige andere Dateien umgebaut werden.

                              Gruß
                              MaleBorg

                              Kommentar

                              Info zu diesem Forenarchiv:
                              Mit Release von 1.5.7 wurde die deutsche Zen Cart Version auf eine reine DIY-Lösung umgestellt.
                              Für einen Support via Forum stehen keine personellen und zeitlichen Ressourcen mehr zur Verfügung.
                              Dieses Supportforum bleibt im Nur-Lesen-Modus als Wissensarchiv noch online verfügbar.
                              PM Funktionalität, Registrierung und Posten neuer Beiträge sind deaktiviert.
                              Zugriff auf Anhänge in den Postings ist auch ohne Registrierung/Einloggen möglich.
                              FAQ und Downloadbereich des Forums wurden in die neue umfangreiche Knowledgebase auf der zen-cart-pro.at Website übernommen.

                              Das Development der deutschen Zen Cart Version geht wie bisher auf Github weiter.
                              Wir werden auch weiterhin neue Versionen bereitstellen und die Onlinedokumentation/Knowledgebase aktualisieren.
                              Fehler in der Software können auf Github als Issues gemeldet werden.
                              Follow us
                              aktuelle version
                              Zen Cart 1.5.7g deutsch
                              vom 12.12.2023
                              [Download]
                              Lädt...
                              X