Gibt es eine Möglichkeit den Aufruf so anzupassen, dass er sich auf den Hauptshop bezieht? Ich kann ja nicht für jeden Subshop den Controller duplizieren.
In deinem Beispiel sind die Links aber identisch oder ich habe meine Brille nicht geputzt. Vielleicht könnte man im Template etwas mit replace machen? Weiß ja nicht was dann angezeigt werden soll.
Ich habe vorher mit einem action tag gearbeitet, da gab es allerdings ein Problem mit dem cache. renderEsiTag() wurde sporadisch auf null aufgerufen und hat die Pagination verhindert. Da wir auch nach Wochen keine Lösung gefunden haben (inkl. Shopware Support und anderen Agenturen), suche ich jetzt nach einem Workaround. Mein Gedanke war das action tag durch den anderen Controller zu tauschen und das Drumherum umzubauen, dass die anzeige nicht mehr dynamisch sein muss.
Ich habe mir das noch mal angeschaut, wenn ich den Link inklusive dem Anteil der virtuellen URL aufrufe wird tatsächlich der Inhalt ebenfalls angezeigt. Gibt es denn eine Möglichkeit den Inhalt direkt anzuzeigen ohne ein action Tag zu verwenden? Oder ist die Verwendung des Controllers mit dem URL tag hier grundsätzlich falsch. Gibt es eine alternative?
Ahja, dann hab ich den Controller genau falsch verwendet.
Ich berechne im Controller nen veränderten Preis. Den möchte ich dann im Listing und Detailansicht ausgeben.
So wie es ausschaut kann ich den Controller aber verwerfen. Ich hatte gehofft auf eine andere Weise auf den Controller zuzugreifen und somit das Problem zu umgehen. Mit action tag komm ich ja nicht weiter, weil das plugin sonst das Umblättern des Listings zerlegt.
PHP Fatal error: Uncaught Error: Call to a member function renderEsiTag() on null in /var/www/meinserver.de/var/cache/production\_201904021344/templates/frontend\_Mytheme\_de\_DE\_1/50/31/28/503128c6a8625d72bef2fb539020fac6cbaf3579.snippet.box-list.tpl.php:273
Aus der Cache Datei: <?php echo
$_smarty_tpl->smarty-\>registered\_plugins[Smarty::PLUGIN\_FUNCTION]['action'][0][0]-\> renderEsiTag(array('module'=\>'widgets','controller'=\>'calcPrice','action'=\>'index','id'=\>$\_smarty\_tpl-\>tpl\_vars['sArticle']-\>value['articleDetailsID']),$\_smarty\_tpl);?\>
Mir fehlt grad ne Idee wie ich am geschicktesten den veränderten Preis für jeden Artikel ins Frontend bekomme. Mit dem action tag konnte ich ja jeden preis einzeln im Controller zusammensetzen und direkt anzeigen, wenn der nervige fehler nicht wäre…
Im Regelfall macht man sowas per JavaScript. Du hast einen Widget Controller der einen Json zurück lieferst und renderst dann die Information per JavaScript in das Template.
ESI Tags sind in Sachen Performance nicht die beste Wahl, weil die ganze Seite warten muss.
Danke schonmal Euch beiden. Ich habe das ganze jetzt auf Ajax umgebaut. Beim Neuladen der Seite und auf Knopfdruck wird der Preis aktualisiert. Im letzten Schritt fehlt mir noch eine möglichkeit auf das Umblättern zu reagieren. Die Seite wird ja beim umblättern nicht neu geladen, sondern nur per Ajax neu befüllt, richtig? Hat jemand eine Idee wie ich da vorgehen könnte?
Für einen Kunden von uns musste ein Zusatzplugin erstellt werden. Hier hatte ich auch das Problem, dass die Ajax-Blätterfunktion von Shopware so ganz und gar nicht kompartibel mit dem Plugin war. Allerdings sollte die nicht ganz abgeschalten, sondern nur bei einem bestimmten Controller. Daraufhin habe ich die „action-pagination.tpl“ manipuliert und das Attribut „data-action-link“ in den Links umgeschrieben. Damit greift die Ajax-Blätterfunktion nicht mehr und mein Ziel war erreicht. Ist zwar nicht die feine englische Art (wie man so schön sagt) aber das gewünschte funktioniert.