Wir möchte dynamische Daten in der Produktdetailansicht ausgeben lassen, die aus einer eigenen DB-Tabelle kommen. Leider werden diese dynamischen Daten beim ersten Aufruf der Produktdetailansicht für ein bestimmtes Produkt im Production-Modus gecacht und diese ändern sich dann nie mehr.
Wie kann Teile im twig-Template vom Cache ausnehmen lassen?
Danke. Ich analysiere gerade, wie Shopware das so macht, bspw. beim Warenkorb-Icon rechts oben, wo sich ja der Betrag ändern muss oder auch unter Mein Konto bei den Adressen. Aber lt. den twig-Templates hätte ich da kein Javascript vermutet. Wird da nicht der Betrag auch schon serverseitig generiert.
Wobei dann wieder wundern würde, das es nicht gecacht wird. Die Umstellung auf Javascript und Ajax ist an der Stelle etwas aufwendig. Ich dachte, man kann im twig vielleicht bestimmte Teile einfach ausnehmen oder im Controller. Gäbe es neben Javascript noch Alternativen?
Ok. An der Stelle ist es mit JavaScript gelöst. Serverseitig steht 0,00 neben dem Cart-Symbol und dann wird per JavaScript der richtige Betrag eingesetzt. Aber bei Mein Konto -> Adressen ist es nicht so, da stehen die Daten gleich in der HTML-Ausgabe und werden serverseitig ausgegeben. Da wäre es interessant zu wissen, wie das dort funktioniert.
Ok. Wie kann man den HTTP Cache abschalten? Wäre jetzt für die Produktdetailansicht natürlich nicht empfehlenswert vermutlich, aber ev. eine Alternative.
Kann man nicht bestimmte Teile einer Seite aus dem Cache ausnehmen? Ich hätte hier nur das gefunden:
Ok. Wie kann man den HTTP Cache abschalten? Wäre jetzt für die Produktdetailansicht natürlich nicht empfehlenswert vermutlich, aber ev. eine Alternative.
Kann man nicht bestimmte Teile einer Seite aus dem Cache ausnehmen? Ich hätte hier nur das gefunden:
In Twig lassen sich nicht Teile einzeln vom Cache ausschließen. Es gibt aber wohl eine Extension, kann man ja mal testen ob die kompatibel zu Shopware 6 ist.
ich muss das Thema nochmal hervorkramen. Gibt es dazu schon was Neues?
Gerade bei der Verfügbarkeitsanzeige auf der Produktdetailseite ist das echt blöd. Wenn ein Kunde den letzten verfügbaren Artikel bestell, der Artikel aber noch 2 Stunden als verfügbar angezeigt wird und der nächste Kunde in dem Glauben bestellt, dass der Artikel sofort verfügbar ist.
Ich meine nicht den Lagerbestand sondern den verfügbaren Bestand. Der Lagerbestand wird ja erst nach Versand angepasst.
In unserem Fall ist es so, dass ein Kunde bestellt d.h. der Lagerbestand des Artikels ist 1 und der verfügbare Bestand 0. Im Frontend wird dem Kunden aber angezeigt, dass der Artikel verfügbar ist.
Wenn man den Cache löscht wird den Kunden angezeigt, dass der Artikel aktuell nicht mehr verfügbar ist bzw. mit Wiederauffüllzeit, wann er wieder versandfertig ist.
Mit Lagerbestand meine ich auch den verfügbaren Bestand. Bei einer offenen Bestellung wird der Bestand reserviert, der verfügbare Bestand zählt an dieser stelle runter. Spätestens im Warenkorb werden die Bestände Live abgerufen (ohne Cache), ist der verfügbare Bestand kleiner, dann wird der Warenkorb entsprechend angepasst. Ich vermute also, dass hier evtl ein Drittanbieter Plugin im Spiel ist. Es müsste lediglich nur der Cache invalidiert werden. Alternativ kannst du auch das Event ProductIndexerEvent mit den IDs der Produkte auslösen.
Welche Shopware-Version nutzt du? Ich glaube ab Shopware 6.5.5.0 wurde die Möglichkeit eingebaut, dass man auf die Logik vom Lagermanagement von Shopware 6.6.x umstellen kann, bei der es keinen Unterschied mehr zwischen Lagermenge und verfügbarem Bestand gibt - die Reservierungs-Logik entfällt also, so dass im Grunde bei der Bestands-Anzeige immer der korrekte Wert greifen müsste: Stock Configuration | Shopware Documentation