Hallo, ich wollte die Banner, die auf der Startseite im Shop eingebunden sind - auch auf den Customseiten sowie auf den Artikel-Detailseiten anzeigen lassen. Jetzt habe ich erfahren, dass die Variabe (aus banner.tpl) {$sBanner.img}
nicht auf den angesprochenen Seiten verfügbar ist / ausgegeben werden kann. Wie kann ich den Inhalt der Variable auf den anderen Seiten verwenden? Wie muss ich vorgehen, sprich wie kann ich eine globale Variable den gleichen Inhalt zuweisen, die ich dann komplett in der Shopware-Template Welt ansprechen bzw. abrufen kann? Dank euch, andré
Dafür müsste man schauen, wo die Variable $sBanner gesetzt wird: entweder direkt im Plugin oder Suche nach der Variable im “engine” Ordner. Etwa folgendes könnte irgendwo stehen: $this-\>View()-\>sBanner = Shopware()-\>Modules()-\>Marketing()-\>sBanner($category);
die Funktion sBanner() ist in der Datei core/sMarketing.php definiert.
Hi! In der core/class/sMarketing.php gibt es folgendes: public function sBanner($sCategory, $limit=1) { $limit = (int) $limit; $sql = " SELECT \* FROM s\_emarketing\_banners WHERE categoryID=? AND (valid\_from \<= NOW() OR valid\_from='0000-00-00 00:00:00') AND (valid\_to \>= NOW() OR valid\_from='0000-00-00 00:00:00') ORDER BY RAND() LIMIT $limit "; $getBanners = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>GetAll($sql, array($sCategory)); if(empty($getBanners[0])) { return false; } foreach ($getBanners as &$getAffectedBanners) { if(!empty($getAffectedBanners['liveshoppingID'])) { $tmpLive = array('liveshoppingID' =\> $getAffectedBanners['liveshoppingID']); $tmpLive = $this-\>sSYSTEM-\>sMODULES['sArticles']-\>sGetLiveShopping('fix', 0, $tmpLive, true); if(!empty($tmpLive)){ $getAffectedBanners['liveshoppingData'] = $tmpLive['liveshoppingData'][0]; } } if (!empty($getAffectedBanners["img"])){ $getAffectedBanners["img"] = $this-\>sSYSTEM-\>sPathBanner.$getAffectedBanners["img"]; } if (!preg\_match("/http/",$getAffectedBanners["link"]) && !empty($getAffectedBanners["link"])) { $getAffectedBanners["link"] = "http://".$getAffectedBanners["link"]; } } if ($limit == 1 ) { $getBanners = $getBanners[0]; } return $getBanners; }
Die genau gesuchte Variable taucht jedoch nicht darin auf.
Der Rückgabewert der Funktion wird ja in die Variable $sBanner geschrieben.
Okay, macht Sinn. In der engine/Shopware/Controllers/Frontend/index.php taucht genau deine Zeile auf: public function indexAction() { $this-\>View()-\>loadTemplate('frontend/home/index.tpl'); $category = Shopware()-\>Shop()-\>get('parentID'); $this-\>View()-\>sCharts = Shopware()-\>Modules()-\>Articles()-\>sGetArticleCharts(); $this-\>View()-\>sCategoryContent = Shopware()-\>Modules()-\>Categories()-\>sGetCategoryContent($category); $this-\>View()-\>sOffers = Shopware()-\>Modules()-\>Articles()-\>sGetPromotions($category); $this-\>View()-\>sLiveShopping = $this-\>getLiveShopping(); $this-\>View()-\>sBanner = Shopware()-\>Modules()-\>Marketing()-\>sBanner($category); $this-\>View()-\>sBlog = $this-\>getBlog(); if($this-\>Request()-\>getPathInfo()!='/') { $this-\>Response()-\>setHttpResponseCode(404); } }
aber was sagt mir das ganze jetzt? Hilft es überhaupt weiter?
Den Aufruf dieser Methode könnte man in einem eigenen Plugin benutzen, im die Variable sBanner auf allen/bestimmten Seiten verfügbar zu machen.