yakamara / ynewsletter

15 stars 6 forks source link

Artikel die versendet werden, sollten Frontendartikel sein #12

Closed tbaddade closed 4 years ago

tbaddade commented 4 years ago

Bevor der Artikel geholt wird, müsste vermutlich vor dieser Zeile https://github.com/yakamara/redaxo_ynewsletter/blob/master/lib/ynewsletter.php#L38

das gesetzt werden:

self::setProperty('redaxo', true);

Ansonsten werden Offline Slices von Blöcks versendet. Siehe auch https://github.com/FriendsOfREDAXO/bloecks/issues/84 und #799 von P400

schuer commented 4 years ago

Unter Umständen muss der Modus sogar deutlich früher gewechselt werden, ich bin mir gerade nicht sicher. Cache-Warmup macht es mittels EARLY EP: https://github.com/FriendsOfREDAXO/cache_warmup/blob/5f1b9cb8fbfeca8c1849a7b65483f62bfb62295d/boot.php#L55-L61

tbaddade commented 4 years ago

Das mit dem EP ist interessant. Dann wäre es vielleicht sinnvoller das bei Blöcks so aufzunehmen. Die AddOns registrieren bei Blöcks dann nur die eigenen Backendseiten und Blöcks stellt den Modus allein um.

schuer commented 4 years ago

@tbaddade Ich habe mir jetzt mal angeschaut, was eigentlich passiert, und die Sache ist unschön: Immer, wenn du im Backend rex_article_content->getArticle() verwendest, wird dir REDAXO alle Slices liefern, auch die Offline-Slices. Schlimmer noch: Es werden dabei bereits die Cache-Files für den Artikel generiert, die dann ebenso die Offline-Slices abbilden und sie damit sogar im Frontend ausbringen. Du hebelst damit also den blÖcks-Mechanismus vollständig aus. Denn blÖcks greift erst/nur beim EP SLICE_SHOW ein.

Ich habe jetzt nicht alles bis ins Detail zerpflückt, aber mir scheint, es gibt auf Seite von blÖcks gar keine andere Lösung dafür. Wollte man ermöglichen, dass sowas wie rex_article_content->getArticle() richtig mit Offline-Slices umgeht, müsste man es im Core bzw. im Structure-AddOn implementieren, nicht in blÖcks.

In der aktuellen Situation bleibt vermutlich nur die Möglichkeit, entweder die Artikelinhalte erst beim EP PACKAGES_INCLUDED zu erfassen, oder aber sie sich manuell zusammenzubauen und dabei den Status jedes Silces zu prüfen, um Offline-Slices auszuschließen.

Wie gesagt, sehr unschön, und mir ist das jetzt erst so richtig bewusst geworden, welche Anforderungen blÖcks’ Mechanik mit sich bringt. Müssten wir zumindest mal Dokumentieren oder überlegen, wie man es womöglich geschickt lösen könnte.

schuer commented 4 years ago

Achso, und die Sache mit dem Frontend-Modus ist dementsprechend auch nicht praktikabel. Beim Cache-Warmup funktioniert es nur deshalb, weil der Generator im Frontend-Modus aufgerufen werden kann und er nichts anderes macht, als Inhalte zu generieren. — Für andere AddOns und im anderen Kontext ist das nicht zu gebrauchen.

schuer commented 4 years ago

BlÖcks-Issue ist jetzt übrigens hier erfasst: https://github.com/FriendsOfREDAXO/bloecks/issues/86

tbaddade commented 4 years ago

@schuer Danke dir für die Erklärung. Mein Kommentar dazu steht hier

dergel commented 4 years ago

Mittlerweile sind die online offline slices in redaxo drin und es klappt entsprechend im backend. Für mich heisst das automatisch auch, dass der Frontendartikel aufgerufen wird, da es sonst gar nicht funktionierten könnte.