Live Änderung des Templates

Moin,

ich hab ein kleines Plugin geschrieben. Der User merkt sich einen Artikel über die Artikelliste via Klick auf das Herz (bzw. Merken - Merkliste). Bei einem Reload soll markiert werden, welche Artikel gemerkt wurden. Funktional passt alles.

Lokal funktioniert es auch - nur online muss ich die Templats neu generieren, damit eine Änderung durch den User sichtbar wird. Das geht natürlich nicht.

Wie schaffe ich es, dass live Änderungen im Template angezeigt werden? Mittels Javascript nachladen find eich unschick, da es erst Zeitverzögert angezeigt wird.

Gruß

Wie speicherst Du den Zustand?

Ich persönlich speichere gar nichts. Ich benutze die Daten aus der Merkliste Tabelle “s_order_notes”. Und die werden dort gespeichert, wenn der User sich einen Artikel merkt.

Die Frage ist jedoch wie ich dynamische Inhalte auf die Webseite bekomme.
Allein die Frage, wie bekomme ich die aktuelle Uhrzeit ohne Javascript auf die Seite könnte ich im Moment nicht beantworten.

Wenn Du im “Live-System” den HTTP-Cache eingeschaltet hast, kann das so nicht funktionieren.
Das “Listing” wird nach dem Erstaufruf aus dem Cache ausgeliefert, so bekommt Kunde also keine “Änderung” angezeigt. Würde man nun den Cache leeren und Kunde macht einen Reload, bekommt er zwar die “Markierung” angezeigt, ein anderer Kunde, der in Folge das Listing aufruft aber auch.

Da gäbe es nun mehrere Wege

  1. Listing aus dem HTTP-Cache nehmen

  2. HTTP-Cache für den Shop ganz deaktivieren

3a) Ein eigenes Plugin, welches die Informationen aus einen eigenem Controller bereitstellt und das Listing in der tpl um den Aufruf eines “action tags” erweitern.
3b) Über Cache Keys etwas basteln

https://developers.shopware.com/developers-guide/http-cache/

  1. per JS zu jedem Listingeintrag die Informationen nachladen und ins DOM schreiben.

 

Exakt so habe ich das Problem ebenfalls identifiziert  Thumb-Up.

Perfekt wäre, wenn man einen Block vom Cache ausschliessen könnte.
Notfalls dann das komplette listing. Ich versuch mich gerade am http cache, bislang ohne erfolg.

Hab „NoCache-Controller / Tags:“ gefunden. Wie benutzt man das?
„frontend/listing price“ -> was bedeutet das? Das der Preis nicht mit gecached wird?