Werbung / Banner buchen
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: E-Mail bei neuer Rezension

    estrich

    • Neu im Forum
    • Beiträge: 15
    E-Mail bei neuer Rezension
    am: 31. Juli 2024, 14:55:52
    Hallo!
    wir hätten gerne wie in unserem alten Shop eine E-Mail Benachrichtigung wenn ein Kunde eine neue Produktrezension abgibt, damit wir diese möglichst zeitnah freischalten können.

    Gibt es hierzu eine Einstellung die ich bisher übersehen habe?

    Danke im Voraus & mfg,
    Estrich

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

    karsta.de

    • Experte
    • Beiträge: 3.156
    Re: E-Mail bei neuer Rezension
    Antwort #1 am: 01. August 2024, 08:25:20
    Wäre auch eine gute Sache als Standard im Shop.

    ANLEITUNG: E-Mail an Admin bei Artikelbewertung

    BG Karsta

    estrich

    • Neu im Forum
    • Beiträge: 15
    Re: E-Mail bei neuer Rezension
    Antwort #2 am: 01. August 2024, 09:31:44
    Super - Danke Karsta!

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: E-Mail bei neuer Rezension
    Antwort #3 am: 01. August 2024, 16:36:24
    Das würde ich mal bleiben lassen, da es nicht update-sicher ist und eine Core-Datei geändert werden muß, abgesehen davon, daß die Anleitung (bitte alles im Thread lesen) veraltet sein dürfte).
    Wenn niemandem eine update-sichere Version dazu einfällt hilft es ein Ticket mit Typ "Neues Feature" dazu aufzumachen.

    Gruß,
    noRiddle

    karsta.de

    • Experte
    • Beiträge: 3.156
    Re: E-Mail bei neuer Rezension
    Antwort #4 am: 06. August 2024, 11:43:34
    Ich habe dafür mal ein Ticket #2795 erstellt. Vielleicht findet es ja den Weg in den Standard.

    Außerdem, wer es denn doch in die Datei direkt einfügen will, sollte es nicht wie beschrieben in die genannte Zeile einfügen, denn dann erhält der Admin auch Mails, wenn die Bewertung gar nicht wirklich versendet wurde.
    Also besser product_reviews_write.php Suche:
    Code: PHP  [Auswählen]
        if ($_SESSION['customers_status']['customers_status_reviews_status'] != '1') {
          $messageStack->add_session('product_reviews', PRODUCT_REVIEWS_SUCCESS_WAITING, 'success');
        } else {
          $messageStack->add_session('product_reviews', PRODUCT_REVIEWS_SUCCESS, 'success');
        }

    und füge DANACH ein:
    Code: PHP  [Auswählen]
    xtc_php_mail(
      EMAIL_SUPPORT_ADDRESS,
      EMAIL_SUPPORT_NAME,
      STORE_OWNER_EMAIL_ADDRESS,
      '',
      '',
      '',
      '',
      '',
      '',
            // Beginn HTML-Mail
      NEW_REVIEW_SUBJECT,
      '<div style="max-width:700px;width:100%;margin:0 auto;">' . NEW_REVIEW_TEXT . '<a href="' . xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($product->data['products_id'], $product->data['products_name'])) . '">' . $product->data['products_name'] . '</a><br />' .
      NEW_REVIEW_POINTS . $_POST['rating'] . '<br />' .
      NEW_REVIEW_BLA . '<br />' .$_POST['review']. '</div>',
            // Beginn Text-Mail
      NEW_REVIEW_TEXT . xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($product->data['products_id'], $product->data['products_name'])) . "\r\n" .
      NEW_REVIEW_POINTS . $_POST['rating'] . "\r\n" .
      NEW_REVIEW_BLA . "\r\n" . $_POST['review']
    );     

    Und Sprachdateien nicht vergessen:
    lang/[SPRACHE]/extra/bewertungsnachricht.php
    mit folgendem Inhalt:
    Code: PHP  [Auswählen]
    <?php
    defined('NEW_REVIEW_SUBJECT') || define('NEW_REVIEW_SUBJECT', 'Neue Bewertung im Shop');
    defined('NEW_REVIEW_TEXT') || define('NEW_REVIEW_TEXT', 'Artikel: ');
    defined('NEW_REVIEW_POINTS') || define('NEW_REVIEW_POINTS', 'Sterne: ');
    defined('NEW_REVIEW_BLA') || define('NEW_REVIEW_BLA', 'Bewertungstext: ');

    BG Karsta

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: E-Mail bei neuer Rezension
    Antwort #5 am: 06. August 2024, 13:12:04
    Man könnte es update-sicher machen, wenn, ja wenn mir einfallen würde wie man das erneute Senden der Mail durch Browser-Reload verhindern könnte. Mit Prüfung auf $_SESSION['messageToStack']['product_reviews']  klappt's leider nicht, weil die ja gleich nach ->output  unsetted wird.
    Vielleicht date_added  abfragen und wenn mehr als eine Sekunde vergangen ist Mail nicht mehr senden ?

    Vielleicht hat jemand eine Idee.

    Code: PHP  [Auswählen]
    <?php
    /********************************************************************
    * file: send_mail_when_newreview.php
    * path: /includes/extra/application_bottom/
    * use: send mail to admin when a new review has been written
    *
    * © copyright, noRiddle, 01-2024
                 ____
                |    |       |     | |
      __   ___  |____/ °  ___|  ___| |  ___
    |/  | |   | |   \  | |   | |   | | |___|
    |   n |___o |    R i |___d |__ d l |__e

    Leider finde ich keine Möglichkeit das erneute Senden der Mail durch Browser-Reload zu verhindern.
    Mit $_SESSION['messageToStack']['product_reviews'] klappt's leider nicht, weil die ja gleich nach ->output unsetted wird.
    Vielleicht date_added abfragen und wenn mehr als eine Sekunde vergangen sind Mail nicht mehr senden ?
    ********************************************************************/


    if(basename($PHP_SELF) == FILENAME_PRODUCT_REVIEWS) {
      if(isset($_GET['products_id']) && is_object($product) && $product->isProduct() === true) {
        if(isset($_SESSION['tracking']['pageview_history']) && end($_SESSION['tracking']['pageview_history']) == '/product_reviews.php?products_id='.$_GET['products_id']) {
          //if(some condition to prevent mail being send again with browser reload) {
            $review_qu_str = "SELECT r.reviews_rating,
                                     r.date_added,
                                     rd.reviews_text
                                FROM "
    .TABLE_REVIEWS." r
                           LEFT JOIN "
    .TABLE_REVIEWS_DESCRIPTION." rd
                                  ON rd.reviews_id = r.reviews_id
                                 AND rd.languages_id = "
    .(int)$_SESSION['languages_id']."
                                WHERE products_id = "
    .(int)$product->data['products_id']."
                             ORDER BY r.reviews_id DESC LIMIT 1"
    ;

            $review_qu = xtc_db_query($review_qu_str);

            if(xtc_db_num_rows($review_qu) > 0) {
              $review_arr = xtc_db_fetch_array($review_qu);

              xtc_php_mail(EMAIL_SUPPORT_ADDRESS,
                           EMAIL_SUPPORT_NAME,
                           STORE_OWNER_EMAIL_ADDRESS,
                           '',
                           '',
                           '',
                           '',
                           '',
                           '',
                           // Beginn HTML-Mail
                           NEW_REVIEW_SUBJECT,
                           NEW_REVIEW_TEXT.'<a href="' . xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($product->data['products_id'], $product->data['products_name'])) . '">'
                          .$product->data['products_name'].'</a><br />'
                          .NEW_REVIEW_POINTS.$review_arr['reviews_rating'].'<br />'
                          .NEW_REVIEW_BLA.$review_arr['reviews_text'],
                           // Beginn Text-Mail
                          NEW_REVIEW_TEXT.xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($product->data['products_id'], $product->data['products_name']))
                          ."\r\n"
                          .NEW_REVIEW_POINTS.$review_arr['reviews_rating']
                          ."\r\n"
                          .NEW_REVIEW_BLA.$review_arr['reviews_text']
                          );
            }
        //}
        }
      }
    }

    Natürlich sollte man versuchen Mail-Templates zu verwenden anstatt hard-codierte Mail-Texte im Skript.

    Gruß,
    noRiddle

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Re: E-Mail bei neuer Rezension
    Antwort #6 am: 06. August 2024, 13:37:24
    Ideen:
    1. mach es nicht in der application_bottom sondern top. Dann kannst du MessageStack noch abfragen bevor es ausgegeben wird

    2. schreibe eine Session Variable

    3. ich füge einen autoinclude ein

    Gruß Gerhard

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: E-Mail bei neuer Rezension
    Antwort #7 am: 06. August 2024, 22:21:02
    Punkt 1.:
    Ja, stimmt ja, habe ganz vergessen, daß ich ja bereits in der product_reviews.php  bin und nicht noch in der products_reviews_write.php  und am Schluß alles machen muß.
    Manchmal ist man echt blind.

    Punkt 2 braucht man ja dann nicht.
    Punkt 3: Ja, mach. Hooks können nie schaden.

    Danke.

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: E-Mail bei neuer Rezension
    Antwort #8 am: 13. September 2024, 08:47:13
    Hier noch die nach GTBs Tipp funktionierende Implementation:
    (Wo die Datei hin muß steht im Kopf derselben.)
    Code: PHP  [Auswählen]
    <?php
    /********************************************************************
    * file: send_mail_when_newreview.php
    * path: /includes/extra/application_top/application_top_end/
    * use: send mail to admin when a new review has been written
    *
    * © copyright, noRiddle, 01-2024
                 ____
                |    |       |     | |
      __   ___  |____/ °  ___|  ___| |  ___
    |/  | |   | |   \  | |   | |   | | |___|
    |   n |___o |    R i |___d |__ d l |__e

    ********************************************************************/


    if(basename($PHP_SELF) == FILENAME_PRODUCT_REVIEWS) {
      if(isset($_GET['products_id']) && is_object($product) && $product->isProduct() === true) {
        if(isset($_SESSION['tracking']['pageview_history']) && end($_SESSION['tracking']['pageview_history']) == '/product_reviews.php?products_id='.$_GET['products_id']) {
          //echo '<pre style="padding:100px 0 0;">'.print_r($_SESSION['messageToStack']['product_reviews'], true).'</pre>';
          if(isset($_SESSION['messageToStack']['product_reviews']) && !empty($_SESSION['messageToStack']['product_reviews'])) {
            $review_qu_str = "SELECT r.reviews_rating,
                                     r.date_added,
                                     rd.reviews_text
                                FROM "
    .TABLE_REVIEWS." r
                           LEFT JOIN "
    .TABLE_REVIEWS_DESCRIPTION." rd
                                  ON rd.reviews_id = r.reviews_id
                                 AND rd.languages_id = "
    .(int)$_SESSION['languages_id']."
                                WHERE products_id = "
    .(int)$product->data['products_id']."
                             ORDER BY r.reviews_id DESC LIMIT 1"
    ;

            $review_qu = xtc_db_query($review_qu_str);

            if(xtc_db_num_rows($review_qu) > 0) {
              $review_arr = xtc_db_fetch_array($review_qu);

              xtc_php_mail(EMAIL_SUPPORT_ADDRESS,
                           EMAIL_SUPPORT_NAME,
                           STORE_OWNER_EMAIL_ADDRESS,
                           '',
                           '',
                           '',
                           '',
                           '',
                           '',
                           // Beginn HTML-Mail
                           'Neue Bewertung in Ihrem Shop', //NEW_REVIEW_SUBJECT,
                           'Neue Bewertung für: '.'<a href="' . xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($product->data['products_id'], $product->data['products_name'])) . '">' //NEW_REVIEW_TEXT . '<a href="' . xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($product->data['products_id'], $product->data['products_name'])) . '">' .
                          .$product->data['products_name'].'</a><br />'
                          .'Bewertungspunkte: '.$review_arr['reviews_rating'].'<br />' //.NEW_REVIEW_POINTS . $_POST['rating'].'<br />'
                          .'Bewertungstext: <br />'.$review_arr['reviews_text'], //.NEW_REVIEW_BLA . '<br />' .$_POST['review'],
                           // Beginn Text-Mail
                          'Neue Bewertung für: '.xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($product->data['products_id'], $product->data['products_name'])) //NEW_REVIEW_TEXT . xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($product->data['products_id'], $product->data['products_name']))
                          ."\r\n"
                          .'Bewertungspunkte: '.$review_arr['reviews_rating'] //.NEW_REVIEW_POINTS . $_POST['rating']
                          ."\r\n"
                          .'Bewertungstext: '.$review_arr['reviews_text'] //.NEW_REVIEW_BLA . "\r\n" . $_POST['review']
                          );
            }
          }
        }
      }
    }

    Man sollte, wie bereits erwähnt, am besten Mail-Templates verwenden anstatt die Mail-Inhalte hier in der Datei zu definieren.
    Das kann aber ja jemand anders übernehmen.

    Gruß,
    noRiddle
    Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware
    2 Antworten
    2252 Aufrufe
    30. März 2018, 21:38:58 von xtreme-dampf
    9 Antworten
    5442 Aufrufe
    13. April 2011, 14:25:28 von Botox84
    2 Antworten
    2540 Aufrufe
    08. Februar 2016, 09:00:34 von asmong
               
    anything