Shopware Knowledgebase

eMail-Benachrichtigung bei Artikel-Verfügbarkeit

ab Version:3.0.5

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
mail 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

Waren diese Informationen hilfreich? Ja Nein


Weitere interessante Artikel:

Bezeichnung:
Rating:
Klicks:
Datum:

Kategorien:

Bestell-Nr.: SW1338_1271

Lieferzeit ca. 5 Tage

€ 1,00

Preise inkl. gesetzlicher
MwSt. zzgl. Versandkosten*

€ 1,00

Preise inkl. gesetzlicher
MwSt. + Versandkosten*

« Zurück

299 von 299 (Übersicht)