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.
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?
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.
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.
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…
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
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
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.
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?
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.
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.