Hallo, ich habe der Startseite über Marketing->Aktionen eine Aktion zugeordnet, der Link zur Aktionsseite wird richtig ausgegeben. Wie kann man denn den Inhalt der Aktion auf derselben Seite verfügbar machen, auf der die Aktion zugeordnet ist? Auf der verlinkten Aktionsseite gibt es die Template-Variable $sCampaign mit dem Inhalt der Aktion, die müßte man irgendwie auf der Ausgangsseite zur Verfügung haben, dort gibt’s aber nur die $sCampaigns mit dem Link zur Aktionsseite. Beste Grüße
Das ist im Grunde genommen auch das was ich über Einkaufswelten oder einen Banner realisieren möchte. VG
in Einkaufswelten (promotions) können nur vorhandene Artikel zugeordnet werden, ich brauche aber (für jede Kategorie) eine Reihe von kleinen Teaserboxen (unabhängig von den Artikeln), die zu irgendwelchen anderen Seiten verlinken (z.T. auch extern). Das hab ich mit Shopseiten (customPages) probiert - geht auch, aber das sind sehr viele, d.h. es wird sehr unübersichtlich im Backend, man müßte für jede Kategorie ein extra Shopseiten-Verzeichnis anlegen, weil man Shopseiten nicht bestimmten Kategorien zuordnen kann - darum schien mir die Variante mit Aktionen dafür am sinnvollsten, zumal man dort auch mehrere beliebige Inhalts-Container anlegen kann. In der engine/Shopware/Controllers/Frontend/Campaign.php gibt es das: $campaign = Shopware()-\>Modules()-\>Marketing()-\>sCampaignsGetDetail(intval($this-\>request()-\>sCampaign)); ... $this-\>View()-\>sCampaign = $campaign;
Das müßte man doch mit einem Hook für alle Seiten verfügbar machen können - bloß wie? Weiß das nicht jemand?
habe unter engine\Shopware\Plugins\Local\Frontend[b]campaignHook [/b]folgende Bootstrap.php angelegt: [code]<?php class Shopware_Plugins_Frontend_campaignHook_Bootstrap extends Shopware_Components_Plugin_Bootstrap {
public function install() {
$event = $this->createHook( ‘Shopware_Controllers_Frontend_Index’, ‘indexAction’, ‘getCampaigns’, Enlight_Hook_HookHandler::TypeAfter, 0 ); $this->subscribeHook($event); return true; } static function getCampaigns(Enlight_Hook_HookArgs $args) { $category = Shopware()->Shop()->get(‘parentID’); $campaigns = Shopware()->Modules()->Marketing()->sCampaignsGetList($category, ‘’);
$args->getSubject()->View()->myCampaigns = Shopware()->Modules()->Marketing()->sCampaignsGetDetail($campaigns [0][‘id’]);
}
}
[/code]Im Plugin-Manager unter LokalePlugins/Frontend aktivieren, dann stehen die Aktions-Inhalte als Templatevariable $myCampaigns.containers zur Verfügung.
$campaigns [0][‘id’] in Zeile 19 bezieht sich auf die erste in z.B. rightTop angelegte Aktion (man kann ja mehrere anlegen).
Das funktioniert für die Homepage. Für die Kategorie-Listings braucht’s ein zweites Plugin:
engine\Shopware\Plugins\Local\Frontend[b]campaignListingHook[/b]\Bootstrap.php:
class Shopware_Plugins_Frontend_campaignListingHook_Bootstrap extends Shopware_Components_Plugin_Bootstrap {
...
$event = $this->createHook(
'Shopware_Controllers_Frontend_Listing',
...
static function getCampaigns(Enlight_Hook_HookArgs $args) {
$category = Shopware()->Shop()->get('categoryID');
ist das OK so, oder geht’s eleganter?
Beste Grüße