eMail-Benachrichtigung bei Artikel-Verfügbarkeit
| ab Version: | 3.0.5 |
Inhaltsverzeichnis
- 1 Informationen zur eMail-Benachrichtigung bei Artikel-Verfügbarkeit
- 2 Einen Artikel für die eMail-Benachrichtigung einstellen
- 2.1 Es werden keine eMails verschickt?
- 3 Statistik zur eMail-Benachrichtigung
- 4 Technische Informationen
- 4.1 Beteiligte Datenbank-Tabellen
- 4.1.1 Tabelle: s_articles_notification
- 4.1.2 Tabelle: s_core_optin
- 4.2 Beteiligte Templates
- 4.3 Beteiligte Viewports
- 4.4 Cronjob Informationen
Informationen zur eMail-Benachrichtigung bei Artikel-Verfügbarkeit
Mit dieser Funktion können Kunden sich für einen Artikel, der derzeit nicht verfügbar ist, registrieren. Die eMail Adresse wird über ein Double-Opt-In-Verfahren gegengeprüft. Sobald der Artikel wieder einen positiven Lagerbestand besitzt, bekommt der Kunde eine Benachrichtigung per eMail.
Diese Funktion ist ab Version 3.5.5 im Standard enthalten, Nutzer der Version 3.0.5 - 3.5.4 können diese Funktionalität über das Coupon-Modul realisieren. Wir empfehlen in diesen Fällen ein Update auf Version >=3.5.5.
Hinweis: Jeder Kunde wird pro Artikel und Registrierung nur einmal benachrichtigt. Sollte der Lagerbestand des Artikels wieder negativ werden, muss der Kunde sich für eine erneute Benachrichtigung wiederholt registrieren.
Einen Artikel für die eMail-Benachrichtigung einstellen
Um einen Artikel für die eMail-Benachrichtigung vorzusehen, kann direkt am Artikel (Stammdaten) diese Einstellung vorgenommen werden.
Sobald diese Einstellung hinterlegt ist und der Lagerbestand dieses Artikels 0 oder weniger beträgt, kann der Shopbesucher sich für eine Benachrichtigung eintragen.
Die Überprüfung des Lagerbestands der für die eMail-Benachrichtigung vorgesehenen Artikel, wird über ein Cronjob realisiert.
Dieser kann über die Standard-Cronjob-Einstellungen unter:
Einstellungen->Grundeinstellungen->Cronjobs/Bereinigung->Cronjobs konfiguriert werden.
Zusätzlich kann in den Grundeinstellungen eingestellt werden, ob bei einer aktiven eMail-Benachrichtigung der Warenkorb angezeigt wird. Dies kann unter
Einstellungen->Grundeinstellungen->Storefront->Warenkorb/Artikeldetails konfiguriert werden.
Es werden keine eMails verschickt?
Falls Sie Probleme mit der Funktion haben, prüfen Sie bitte ob folgende Punkte erfüllt wurden.
- Der Kunde muss sich nach Registrierung für die eMail-Benachrichtigung mit der Bestätigungsmail authentisieren.
- Der Cronjob muss in den Cronjob-Einstellungen aktiv geschaltet sein.
- Der nächste Ausführungs-Termin des Cronjobs muss summiert mit dem angegebenen Intervall in der Vergangenheit liegen.
- Der Lagerbestand des Artikels muss zur Benachrichtigung positiv sein.
- Zum Testen kann der Cronjob manuell mit Aufruf der Datei: http://www.ihrshop.de/engine/connectors/api/cronjob/shopware.php ausgeführt werden.
Statistik zur eMail-Benachrichtigung
Unter Marketing->Auswertungen->E-Mail Benachrichtigung finden Sie eine Übersicht.
Hier kann eingesehen werden, wie viele und welche Kunden sich jeweils für eine Benachrichtigung bei einem bestimmten Artikel eingetragen haben und auch ob Sie benachrichtigt wurden oder nicht.
Das Modul ist in zwei Teilen aufgebaut. Auf der linken Seite stehen alle Artikel, bei denen sich wenigstens ein Kunde für die Benachrichtigung registriert hat. Hier kann zudem nach einem bestimmten Artikel gesucht werden. Die Suche findet Artikel anhand des Namens oder der Bestellnummer. Zusätzlich kann jede Spalte zur besseren Übersicht sortiert werden. Die Summe der registrierten Kunden und der davon noch nicht benachrichtigten Kunden wird unter der Tabelle zusammengefasst.
Sobald eine Zeile der Tabelle angeklickt wird, füllt sich auf der rechten Seite eine Übersicht mit den Kunden, die sich für den ausgewählten Artikel registriert haben. Auf dieser Seite kann ebenfalls gesucht werden. Diese Suche filtert nach der E-Mail Adresse und dem Namen des Kunden. Für den Fall, dass der Kunde ein Konto besitzt, wird neben dem Kundennamen ein direktlink zum Kundenkonto bereitgestellt.
Dieses Modul ist ein geeignetes Werkzeug um die Anzahl der zu bestellenden Artikel besser zu bestimmen.
Technische Informationen
Hinweis: Die beschriebenen Änderungen der Dateien und Tabellen sind standardmäßig in der Version 3.0.5 enthalten.
Beteiligte Datenbank-Tabellen
Tabelle: s_articles_notification
Für diese Funktion wurde eine neue Datenbank Tabelle angelegt. Die Tabelle s_articles_notification enthält alle Informationen für:
- das Statistikmodul
- das Versenden von E-Mail-Benachrichtigungen
- die Registrierung der Benutzer für einen Artikel
| Spalte | Beschreibung |
|---|---|
| id | Primary-Key |
| ordernumber | Artikel-Bestellnummer |
| date | Datum und Zeit der Registrierung |
| eMail Adresse des Benutzers | |
| send | 0 = Benachrichtigung über Verfügbarkeit noch nicht versendet, 1= Benachrichtigung über Verfügbarkeit versendet |
| language | Sprache des Shops bei der Registrierung für die Benachrichtigung |
| shopLink | Shop Link für die Subshopfähigkeit |
Tabelle: s_core_optin
Im Zuge der Registrierung wird das Double Opt-In Verfahren angewendet, welches auf die Standard Tabelle s_core_optin zurückgreift.
| Spalte | Beschreibung |
|---|---|
| id | Primary-Key |
| datum | Datum das beim Eintragen gesetzt wird. |
| hash | Eindeutiger Hashwert um die Authenzität des User zu bestätigen |
| data | Serialisierte Informationen im JSON format |
Beteiligte Templates
Die Haupttemplates der Funktion befinden sich unter /html/articles/notification/*
Das Template article_confirm_notification.tpl zeigt die Erfolgsmeldung bzw. die Fehlermeldung nach Bestätigung der Double Opt-In eMail an.
Die Datei article_notification.tpl stellt das komplette Formular der Registrierung zur Verfügung. Desweiteren ist hier das Script hinterlegt, welches das Anzeigen des Formulars Varianten und Konfigurator spezifisch erstellt.
Die Haupttemplates der Funktion werden vom Artikeltemplate article_details_middle.tpl inkludiert.
{* ARTICLE_NOTIFICATION *} {include file="articles/notification/article_confirm_notification.tpl" sArticle=$sArticle} {* /ARTICLE_NOTIFICATION *}
{* ARTICLE_NOTIFICATION *} {include file="articles/notification/article_notification.tpl" sArticle=$sArticle} {* /ARTICLE_NOTIFICATION *}
In dieser Templatedatei befindet sich neben den includes noch eine Anpassung der JavaScript funktion changeDetails. Hier wird die Funktion checkNofitication()(wenn Sie existiert) aus der Datei /notification/article_notification.tpl aufgerufen:
if(typeof(window.checkNotification) == "function") { checkNotification(ordernumber); }
Beteiligte Viewports
Einer der wichtigsten und zentralsten Viewports ist der s_detail Viewport. Hier wird unter anderen auch das Opt-In Verfahren für die Benachrichtigung eines Artikels realisiert. Dieser Codeausschnitt erledigt dies:
if ($this->sSYSTEM->_POST["sAction"]=="sendArticleNotification") { $sNotificationEmail = $this->sSYSTEM->_POST["sNotificationEmail"]; $sShowWrongEmailMessage = false; if (!$sNotificationEmail) { $sErrorFlag["sNotificationEmail"] = true; } $pattern="^[_a-zA-Z0-9-](.{0,1}[_a-zA-Z0-9-])*@([a-zA-Z0-9-]{2,}.){0,}[a-zA-Z0-9-]{3,}(.[a-zA-Z]{2,4}){1,2}$"; if(!ereg($pattern, $sNotificationEmail)) { $sErrorFlag["sNotificationEmail"] = true; $sShowWrongEmailMessage = true; } if(isset($this->sSYSTEM->_POST["sArticle"])) { //Put into an array if(is_array($this->sSYSTEM->_SESSION["sNotificatedArticles"])) { if(in_array($this->sSYSTEM->_POST["sArticle"], $this->sSYSTEM->_SESSION["sNotificatedArticles"])){ $sErrorFlag["sNotificatedArticles"] = true; $sShowNotificationFunction = false; } else{ $this->sSYSTEM->_SESSION["sNotificatedArticles"][] = $this->sSYSTEM->_POST["sArticle"]; } } else{ $this->sSYSTEM->_SESSION["sNotificatedArticles"] = array($this->sSYSTEM->_POST["sArticle"]); } } else { $sErrorFlag["sNotificatedArticles"] = true; } if (!count($sErrorFlag)) { $isAlreadyAvailable = $this->sSYSTEM->sDB_CONNECTION->GetRow(" SELECT * FROM `s_articles_notification` WHERE `ordernumber`=? AND `mail` = ? AND send = 0 ", array($this->sSYSTEM->_POST["sArticle"],$sNotificationEmail)); $_POST["sLanguage"] = $this->sSYSTEM->sLanguageData[$this->sSYSTEM->sLanguage]["isocode"]; $_POST["sShopPath"] = "http://".$this->sSYSTEM->sCONFIG["sBASEPATH"]."/".$this->sSYSTEM->sCONFIG["sBASEFILE"]; if(empty($isAlreadyAvailable)) { $sAlreadyForArticleRegistered = false; $mail = new PHPMailer; $mail->IsHTML($this->sSYSTEM->sCONFIG['sTemplates']['sACCEPTNOTIFICATION']['ishtml']); $mail->From = $this->sSYSTEM->sCONFIG['sTemplates']['sACCEPTNOTIFICATION']['frommail']; $mail->FromName = $this->sSYSTEM->sCONFIG['sTemplates']['sACCEPTNOTIFICATION']['fromname']; $mail->Subject = $this->sSYSTEM->sCONFIG['sTemplates']['sACCEPTNOTIFICATION']['subject']; if ($this->sSYSTEM->sCONFIG['sTemplates']['sACCEPTNOTIFICATION']['ishtml']){ $mail->IsHTML(1); $mail->Body = $this->sSYSTEM->sCONFIG['sTemplates']['sACCEPTNOTIFICATION']['contentHTML']; }else { $mail->IsHTML(0); $mail->Body = $this->sSYSTEM->sCONFIG['sTemplates']['sACCEPTNOTIFICATION']['content']; } // Generate confirmation link $hash = md5(uniqid(rand())); $data = $this->sSYSTEM->sDB_CONNECTION->qstr(serialize($_POST)); $sCONFIG['sUSESSL'] == 1 ? $http = "https://" : $http = "http://"; $link = $this->sSYSTEM->rewriteLink(array( 2=>$sArticle["linkDetails"],3=>$sArticle["articleName"],4=>"" ),true); $link .= "?sNotificationConfirmation=$hash&sNotify=1"; $mail->Body = str_replace("{\$sConfirmLink}",$link,$mail->Body); $mail->Body = str_replace("{\$sArticleName}",$sArticle["articleName"],$mail->Body); $this->sSYSTEM->sDB_CONNECTION->Execute(" INSERT INTO s_core_optin (datum,hash,data) VALUES ( now(),'$hash',$data ) "); $mail->ClearAddresses(); $mail->AddAddress($sNotificationEmail, ""); $mail->Send(); } else { $sAlreadyForArticleRegistered = true; } } }
Außerdem übernimmt der Viewport die Aufgabe die Bestätigungs-eMail zu Validieren und den Benutzer für die Benachrichtigung einzutragen.
if ($this->sSYSTEM->_GET["sNotificationConfirmation"] && $this->sSYSTEM->_GET["sNotify"]) { $hash = $this->sSYSTEM->sDB_CONNECTION->qstr($this->sSYSTEM->_GET["sNotificationConfirmation"]); $getConfirmation = $this->sSYSTEM->sDB_CONNECTION->GetRow(" SELECT * FROM s_core_optin WHERE hash = $hash "); if (!empty($getConfirmation["hash"])){ $notificationConfirmed = true; $json_data = unserialize($getConfirmation["data"]); $date = date("Y-m-d h:i:s"); $this->sSYSTEM->sDB_CONNECTION->Execute(" DELETE FROM s_core_optin WHERE hash = $hash "); }else { $notificationConfirmed = false; } if ($notificationConfirmed){ $this->sSYSTEM->sDB_CONNECTION->Execute("INSERT INTO `s_articles_notification` ( `ordernumber` , `date` , `mail` , `language` , `shopLink` , `send` ) VALUES ( ?,?,?,?,?,'0' )", array($json_data["sArticle"],$date,$json_data["sNotificationEmail"],$json_data["sLanguage"],$json_data["sShopPath"])); $notifyMessage["sConfirmed"] = 1; $notifyMessage["sMessage"] = $this->sSYSTEM->sCONFIG['sSnippets']["sRegisterForNotificationValid"]; } else { // Send eMail-confirmation first $notifyMessage["sConfirmed"] = 0; $notifyMessage["sMessage"] = $this->sSYSTEM->sCONFIG['sSnippets']["sRegisterNotificationInValid"]; } }
Cronjob Informationen
Wie oben bereits beschrieben wird das Versenden und das Abprüfen des Lagerbestands der Artikel durch einen Cronjob realisiert. Um diese wiederkehrenden Aufgaben regelmäßig auszuführen sollten ein Cronjob auf dem Server eingerichtet werden.
Weitere Informationen über Shopware-Cronjobs finden Sie hier
Artikel-PDF erstellen
Weiteres zu "eMail-Benachrichtigung bei Artikel-Verfügbarkeit"
Artikel bewerten
Weitere interessante Artikel:
Kategorien:
Bestell-Nr.: SW1338_1271
Lieferzeit ca. 5 Tage
Preise inkl. gesetzlicher
MwSt. zzgl. Versandkosten*
Preise inkl. gesetzlicher
MwSt. + Versandkosten*

