Hook für Ajax-Calls (Produkt-Details)?

Hallo,

ich zeige die Farbe meiner Produkte separat zur Beschreibung nochmals als kleine farbige Flächen an.

Bei Varianten hab ich das Problem, dass die ja per Ajax nachgeladen werden und die Daten dann angezeigt werden.

Ich müsste mich also in diesen Ajax-Call hängen… wie krieg ich das hin? Hab leider keinerlei Referenzen oder Tutorials im Netz gefunden =/

 

viele Grüße

Abend,

du kannst die .js Datei ja abändern, wenn du diese gefunden hast. Alternativ jQuery Ajax Events verwenden : Ajax Events | jQuery API Documentation.

 

einfach abändern kann ich die nicht… ich will ja updatesicher bleiben.

Müsste ich also in meinem Theme oder notfalls eigenem Plugin lösen…

was muss ich tun? Und welche ist die korrekte JS-Datei  bzw. der korrekte Call?

Farbe? Klingt nach Frietextfeld, oder? Hängt das an der Variante oder am Stammartikel? Und du brauchst die quasi im Template des Varianten-Selectors?

@arnebecker‍

 

Nein, das ist kein Freitextfeld. Es sind Eigenschaften. Außerdem wäre es egal, welcher Feldtyp es ist.

Mein T-Shirt ist zB Blau und hat einen Aufdruck in Gelb und Schwarz. Es hat also die Eigenschaft “Farbe” mit den Werten “Blau, Gelb, Schwarz”.

Diese zeige ich bei “normalen” variantenlosen Artikeln unter dem Artikelbild einfach als farbige Flächen an.

 

Bei Variantenartikeln ist es ein wenig komplizierter… hier muss ich dann die Varianteneigenschaften nehmen, aber die werden ja eh geladen beim Variantenwechsel.

Ich kann es bei Varianten aber nicht übers Template in Smarty lösen, weil die ja nachgeladen werden.

 

Meine Frage ist also: wo muss ich hingreifen?

 

 

Moin @FloC3‍,

wie genau hast du das denn umgesetzt?
Mit einem Plugin oder direkt in deinem Theme?

Sofern du ein Plugin genutzt hast:
Nutzt du das Event  Enlight_Controller_Action_PostDispatchSecure_Frontend_Detail  oder ein Ähnliches um deine Detailseite anzupassen?

Gruß,
Patrick  Shopware

[@Patrick Stahl](http://forum.shopware.com/profile/1869/Patrick Stahl „Patrick Stahl“)‍

Hallo,

nein das ist direkt im Theme. Ich lese mit Smarty die „sProperties“ aus „sArticle“ aus und schleife drüber und erzeug dann farbige Kästchen.

Alles klar.

Der AJAX Call zum Nachladen der Varianten benutzt ja auch nur ein Template - in diesem Fall, wenn ich mich korrekt erinnere, das frontend/detail/ajax.tpl.
Diese überschreibt lediglich ein paar Blöcke, vielleicht ist da deine Anpassung ebenfalls von betroffen.

Wenn die Daten, die du anzeigen willst, also in Smarty verfügbar sind, müsstest du auch problemlos in einem Variantenwechsel deine Anpassungen erledigen können.

Tut mir Leid, wenn ich da eine Facette der Problematik noch nicht ganz verstanden habe, ich habe mich nicht im Detail in die Thematik eingedacht. :stuck_out_tongue:

Gruß,
Patrick  Shopware

Das wollte ich auch gerade schreiben :wink:

[@Patrick Stahl](http://forum.shopware.com/profile/1869/Patrick Stahl “Patrick Stahl”)‍

vielen Dank, genau diese ajax.tpl hab ich gesucht =)

wusste nicht, dass das Ajax auch ein Template hat. Dachte eher da wird der Response einfach in einer Success-Function oder so gehandled und das DOM manipuliert…

Wird es auch. Aber der Response ist schon vorgerendertes HTML. Heute wird AJAX immer mit einem JSON Response in Verbindung gebracht. Die ersten AJAX Nutzer haben tatsächlich so wie noch in Shopware gemacht.

@arnebecker‍ / [@Patrick Stahl](http://forum.shopware.com/profile/1869/Patrick Stahl “Patrick Stahl”)‍

 

jetzt muss ich leider nochmal fragen…

hab mir grad diese frontend/detail/ajax.tpl angeschaut…  aber da is ja überhaupt keine Logik drin? Da wird nur jeder einzelne Block aus dem index.tpl mit leer überschrieben…

bin verwirrt ??

Alle bis auf

{* Main content *}
{block name='frontend_index_content'}

:wink:

@arnebecker‍

 

entweder ich steh auf dem Schlauch oder ich bin zu blöd…

die  frontend/detail/index.tpl bindet als „Main Content“ auch nur die  frontend/detail/content.tpl.

genau in dieser Datei ist auch meine Anpassung für die Farbfelder drin… sie sollte also automatisch herangezogen werden…? Nur warum tut sie’s nicht…

 

ich habe testweise einfach mal ein {debug} in MEINE content.tpl geschrieben --> keine Ausgabe beim Variantenwechsel.

Dann habe ich sie einfach mal in MEINE buy_container.tpl geschrieben --> siehe da, plötzlich gibts eine Debugausgabe beim Variantenwechsel…

wieso ist das so?

oder scheitert es an dieser Stelle an der Vererbung von meiner Theme-Template-Datei? Wegen dieser Vermutung wollte ich die ajax.tpl überschreiben in meinem Template, aber dann ist der Variantenwechsel ganz tot und man bekommt nur noch „503 (Service Unavailable)“ …

 

muss man evtl. irgendwas in der Einstellung „Verfügbare Templates Detailseite“ unter Grundeinstellungen > Storefront > Warenkorb / Artikeldetails anpassen? Falls ja… was steht in diesem Parameter überhaupt drin?

 

so ganz schlau werd ich daraus nicht, wie das mit dem Ajax funktionieren soll… und woher die Daten kommen die geändert werden und wohin sie gehen… vielleicht komm ich aus aus meiner JSON-Response-Denkweise nicht raus :smiley:

 

HILFE

Hm, kann ich leider nichts weiter zu beitragen. Ich habe hier gerade keinen Standard Shop zur Hand und bei unserem Shop ist das irgendwie zu sehr angepasst.

so ganz schlau werd ich daraus nicht, wie das mit dem Ajax funktionieren soll… und woher die Daten kommen die geändert werden und wohin sie gehen… vielleicht komm ich aus aus meiner JSON-Response-Denkweise nicht raus  :D

Wo genau hakts denn? Vielleicht kann ichs erklären. Du kannst entweder ein JSON Response bekommen und den dann per JavaScript in deinen DOM einarbeiten/rendern und dafür vielleicht auch eine Templating Engine in JavaScript nutzen. Oder du bekommst halt einen HTML Snippet und fügst es in den DOM ein. Das ist dann halt schon auf dem Server gerendet. Das Templating findet hier einmal auf dem Server oder eben im Browser statt. Das ist der einzige Unterschied.

@arnebecker‍

 

Konkret:

Wo muss ich hingreifen, um die Ausgabe die durch den Variantenwechsel erzeugt wird, zu verändern?

Offenbar werden die selben Templates inkl. Smarty dazu genutzt. 

Wieso ist ein Change in der buy_container.tpl beim Variantenwechsel wirksam, ein Change in der content.tpl jedoch nicht… eigentlich sollten doch beide verwendet werden?

Eigtl schon! Ja!

hm… dann bin ich jetzt wohl so weit wie vorher =/

Hallo,

beim Variantenwechsel über Ajax wird im Standard ausschließlich der obere Bereich (der Bild Slider und der rechte Bereich daneben, also die Artikel - Details und der Kaufbereich) neu geladen, alle anderen Inhalte nicht (beispielsweise die Tabs darunter etc). Das liegt auch daran, das man die Tabs und deren Inhalte darin gar nicht je Variante festlegen kann (beispielsweise Eigenschaften, Downloads etc, sondern nur für den Hauptartikel). Es kommt also darauf an, wo du deine Inhalte ergänzt hast.

Beste Grüße

Sebastian

@sschreier‍

danke für diesen entscheidenden Tipp!

 

ich hab die Lösung jetzt gefunden, wo festgelegt wird, welcher Bereich vom Ajax neugeladen wird.

Es ist der Parameter defaults.productDetailsSelector in der jquery.ajax-variant.js. Dort ist eine Klasse des Containers definiert, welcher neugeladen werden soll.

Jetzt muss ich das in meinem Theme oder Plugin nur noch irgendwie ändern können…

 

Edit:

hab mein Problem jetzt lösen können.

Ich hab mich mit $.subscribe(„plugin/swAjaxVariant/onRequestData“ …) an das Event gehängt und blende meine Daten dann selbst ein.