wir sind von 5.2 auf 5.4 heochgegangen, seit dem greifen unsere Anpassungen bei den nachgeladenen Artikeln nicht mehr.
Unsere Plugins hängen sich bei dem Event “Enlight_Controller_Action_PostDispatch_Frontend_Listing” ein und greifen die “index”-Action ab.
Früher reichte es sich zusätlich mit der selben Methode beim “Enlight_Controller_Action_PostDispatch_Widgets_Listing” einzuhängen (bei der “ajaxListing”-Action) damit die selben Anpassungen auch für die nachgeladen Artikeln gegriffen haben:
public function install() {
$this->subscribeEvent(
'Enlight_Controller_Action_PostDispatch_Frontend_Listing',
'onFrontendPostDispatch', 1
);
$this->subscribeEvent ( 'Enlight_Controller_Action_PostDispatch_Widgets_Listing',
'onFrontendPostDispatch', 1
);
return true;
}
Seit dem Update wird die ajaxListing-Action aus den Frontend gar nicht aufgerufen, sondern die “listingCount”-Action. Es bringt aber gar nichts sich dort einzuhängen:
Wo kann ich mich denn, zu dem Event schlaumachen? Ein klitzekleines Codebeispiel, der z.B. bei den nachgeladenen Artikeln ein zusätzliches “< h1 >”-Element setzt wäre eine absolute Klasse…
Wieso machst du eigentlich das ganze im PostDispatch Event? Nimm doch das Event Legacy_Struct_Converter_Convert_List_Product dann bist du global bei allen Artikel Boxen…
aber das ist doch ein Filter-Event, oder? Mein PlugIn muss etwas an der Darstellung ändern. Ich lade zwar schon auch züsätzliche Daten dazu, aber primär muss ich die Darstellung (Dinge hinzufügen, ausblenden, css-Datei einbinden…) anpassen. Bei dem Event habe ich doch gar kein View-Objekt, sodass ich “$view->addTemplateDir…” und “$view->extendsTemplate (…” machen kann.
Oder liege ich falsch?
Warum mache ich “das ganze im PostDispatch Event”? Weil es für mich damals (vor 20 Updates) eine intuitive und verständliche Lösung war. Was wäre denn ein besserer (oder irgendein) Weg?
Wieso machst du eigentlich das ganze im PostDispatch Event? Nimm doch das Event Legacy_Struct_Converter_Convert_List_Product dann bist du global bei allen Artikel Boxen…
After 4 hours of working, i have this nice and clean event that solve all my issues :)
public static function getSubscribedEvents() { return [‚Legacy_Struct_Converter_Convert_List_Product‘ => ‚addFlags‘,]; } public function addFlags(\Enlight_Event_EventArgs $args) { $article = $args->getReturn(); if($article[‚flags‘]) { // remove first and last „|“ $flagsId = substr($article[‚flags‘], 1, -1); $flags = explode(‚|‘,$flagsId); $pvr = $this->getPropertyValueRepository(); $flagsArray = ; foreach ($flags as $flagId) { $propertyValue = $pvr->findOneBy([‚id‘ => $flagId]); $flagsArray = $propertyValue->getValue(); } $article[‚rausch_flags‘] = $flagsArray; } return $article; }
private function getPropertyValueRepository(){ return Shopware()->Models()->getRepository(‚\Shopware\Models\Property\Value‘); }