Shopware Knowledgebase

Dieser Artikel ist noch nicht für Shopware 3.5 geprüft bzw. freigegeben.
Shopware Labs

Der Bereich Shopware Labs ist die Plattform für alle Entwickler. Hier findet man technische Dokumentationen und zahlreiche Tipps und Tricks rund um das Thema Programmieren. In dieser Rubrik stellen außerdem die Entwickler der shopware AG neue und experimentelle Lösungsansätze vor. Neue Funktionen, die in dieser Rubrik bereitgestellt werden, sind teilweise auch für zukünftige Releases geplant. Die Funktionen können dann ohne Programmierkenntnisse zukünftig direkt im Shopware Backend konfiguriert werden oder werden über Plugins bereitgestellt. Informationen über neue, geplante Funktionen finden Sie in unserer Roadmap.

Bitte beachten Sie, dass die hier bereitgestellten Lösungsansätze nicht offiziell supportet werden und nur eingebaut werden sollten, sofern Sie über das entsprechende, technische Wissen verfügen.

Was sind Hookpoints?

0 Kommentare
ab Version:3.0.2

Was sind Hookpoints?

Hookpoints sind feste Einstiegspunkte die an verschiedenen Stellen im Programmcode von Shopware definiert sind. An diesen Stellen lässt sich somit eigener PHP-Code ausführen, ohne die betreffende Datei direkt verändern zu müssen.

Beispiel: Zur Darstellung der Startseite wird die Funktion sStart aus der Klasse "sCore.php" verwendet.

Ganz am Ende dieser Funktion ist der Hookpoint "sCore.php_sStart_BeforeEnd" definiert.

PHP-Code den Sie in diesen Hookpoint einfügen, würde also an dieser Stelle ausgeführt werden und könnte z.B. das Array "variables" ergänzen, welches an das Template übergeben wird.

 
	function sStart(){
		// Promotion articles to show up on start
		$promoteArticles = $this->sSYSTEM->sMODULES['sArticles']->sGetPromotions( $this->sSYSTEM->sLanguageData[$this->sSYSTEM->sLanguage]["parentID"] ?  $this->sSYSTEM->sLanguageData[$this->sSYSTEM->sLanguage]["parentID"] : $this->sSYSTEM->_GET["sCategory"]);
 
		$sBenchmark = $this->sSYSTEM->sNextBenchmark($this->sSYSTEM->sBENCHMARK,"Loading Articles");
		// Banner to load on start
		$promoteBanner = $this->sSYSTEM->sMODULES['sMarketing']->sBanner( $this->sSYSTEM->sLanguageData[$this->sSYSTEM->sLanguage]["parentID"] ?  $this->sSYSTEM->sLanguageData[$this->sSYSTEM->sLanguage]["parentID"] : $this->sSYSTEM->_GET["sCategory"]);
		$articleCharts = $this->sSYSTEM->sMODULES['sArticles']->sGetArticleCharts();
		$promoteContent = $this->sSYSTEM->sMODULES['sCategories']->sGetCategoryContent($this->sSYSTEM->sLanguageData[$this->sSYSTEM->sLanguage]["parentID"] ?  $this->sSYSTEM->sLanguageData[$this->sSYSTEM->sLanguage]["parentID"] : $this->sSYSTEM->_GET["sCategory"]);
 
		// Campaigns if active
		$campaigns = $this->sSYSTEM->sMODULES['sMarketing']->sCampaignsGetList( $this->sSYSTEM->sLanguageData[$this->sSYSTEM->sLanguage]["parentID"] ?  $this->sSYSTEM->sLanguageData[$this->sSYSTEM->sLanguage]["parentID"] : $this->sSYSTEM->_GET["sCategory"]);
 
		$sLiveShopping = $this->sSYSTEM->sMODULES['sArticles']->sGetLiveShopping('random', 0, null, true, 'AND lv.frontpage_display=1', '', 0);
 
		if (!empty($this->sSYSTEM->sCONFIG["sBLOGCATEGORY"])){
			$sBlog = $this->sSYSTEM->sMODULES['sArticles']->sGetArticlesByCategory($this->sSYSTEM->sCONFIG["sBLOGCATEGORY"],true,$this->sSYSTEM->sCONFIG["sBLOGLIMIT"]);
		}
 
		$variables = array(
		"sOffers"=>$promoteArticles,
		"sCampaigns"=>$campaigns,
		"sBanner"=>$promoteBanner,
		"sCharts"=>$articleCharts,
		"sCategoryContent"=>$promoteContent,
		"sLiveShopping"=>$sLiveShopping,
		"sBlog" => $sBlog
		);
 
		// Show Cloud. Yes, No.
		if ($this->sSYSTEM->sCONFIG['sSHOWCLOUD']){
			$variables['sCloud'] = $this->sSYSTEM->sMODULES['sMarketing']->sBuildTagCloud();
		}
 
		$templates = array(
		"sContainer"=>"/index/index_home.tpl"
		);
		eval($this->sSYSTEM->sCallHookPoint("sCore.php_sStart_BeforeEnd"));
		return array("templates"=>$templates,"variables"=>$variables);
	}
 

Wo und Wie werden Hookpoints gespeichert?

Die Hookpoints lassen sich unter Grundeinstellungen > Erweiterte Einstellungen > Hookpoints einsehen und bearbeiten. Hier können Sie auch neue Hookpoints einfügen, indem Sie einfach den jeweiligen Hookpoint auswählen, eine Bezeichnung vergeben und den Code hinterlegen. Der Code kann direkt eingegeben werden, PHP-Tags zum Anfang oder Ende des Codes sind also nicht erforderlich.

Die so angelegten Plugins werden in der Datenbank-Tabelle s_core_hookpoints gespeichert.

Nachdem Sie einen neuen Hookpoint angelegt haben, sollten Sie kurz den Shopcache leeren, damit die Änderung direkt übernommen wird.

Gibt es eine Übersicht der verfügbaren Hookpoints?

Ja, in der Klassen-Dokumentation von Shopware findet sich zu jeder Funktion eine Übersicht der dort verfügbaren Hookpoints. Im Zweifelsfall nehmen Sie immer den letzten definierten Hookpoint, dieser wird vor dem "return" der Funktion definiert und kann somit den finalen Rückgabewert der Funktion beeinflussen.

Übersicht Shopware Klassen

Tutorial / Beispiel zum Anlegen eines Hookpoints

Szenario: Ausgabe der Anzahl der Besucher die gerade online sind. Legen Sie ein neues Plugin im Backend an, welches den Hookpoint "sCore.php_sStart_BeforeEnd" modifiziert (Auswahl in Selectbox): Fügen Sie folgenden Code ein:

 
$variables["countUserOnline"] = $this->sSYSTEM->sDB_CONNECTION->GetOne("SELECT COUNT(id) FROM s_statistics_currentusers");
 

Um die Anzahl der Besucher nun auf der Startseite ausgeben zu können, wäre folgende Template-Anpassung notwendig:

Datei index/index_home.tpl öffnen und unter

 
<div class="col_center"> folgendes einfügen:
 

 
Es sind aktuell {$countUserOnline} Kunden online!
 

Falls Sie diese Information auf allen Shopseiten ausgeben möchten (z.B. in der rechten Spalte), können Sie die Funktion sCore->sCustomRenderer verwenden. Diese wird bei jedem Seitenaufruf unabhängig vom Viewport ausgeführt.

Der korrekte Einstiegspunkt in dieser Funktion ist "sCore.php_sCustomRenderer_BeforeEnd" und der zu verwendene Code fast identisch:

 
$sRender["variables"]["countUserOnline"] = $this->sSYSTEM->sDB_CONNECTION->GetOne("SELECT COUNT(id) FROM s_statistics_currentusers");
 

Welche anderen Möglichkeiten zur Quellcode Modifizierung existieren?

Artikel-PDF erstellen

Artikel bewerten

Waren diese Informationen hilfreich? Ja Nein


Kommentare:

Artikel kommentieren


Die mit einem * markierten Felder sind Pflichtfelder.

Weitere interessante Artikel:

Bezeichnung:
Rating:
Klicks:
Datum:

Bestell-Nr.: SW1251

Lieferzeit ca. 5 Tage

€ 1,00

Preise inkl. gesetzlicher
MwSt. zzgl. Versandkosten*

€ 1,00

Preise inkl. gesetzlicher
MwSt. + Versandkosten*

Kategorien: