Zitat von Tim
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
4.9 Merkliste Hinzufügen funktioniert nicht, wenn "replaceInsertTags" im Template
Einklappen
X
-
-
Kann sein, dass getContentElement noch mehr reinpackt. mit |uncached funktioniert es in jedem Fall direkt im Template.
Einen Kommentar schreiben:
-
Zitat von Tim Beitrag anzeigen$HTMLcontent wird durch die Globale bei dir noch gesetzt. Du hast hier wohl einen Array generiert, nicht einen direkten String. Das musst du vorher korrigieren.
Die Inserttags produzieren keine Fehler.
Wenn ich versuche $HTMLcontent zu exploden ohne die Globale, funktioniert das leider immer noch nicht. Ich kann die Variable auch normal ausgeben, was bei einem Array ja nicht möglich sein sollte.
Einen Kommentar schreiben:
-
$HTMLcontent wird durch die Globale bei dir noch gesetzt. Du hast hier wohl einen Array generiert, nicht einen direkten String. Das musst du vorher korrigieren.
Die Inserttags produzieren keine Fehler.
Einen Kommentar schreiben:
-
Sorry, hatte die Nachricht erst jetzt gesehen. Wenn ich versuche das inserttag mit |uncached zu callen bekomme ich folgenden Fehler:
Code:[2021-04-14 10:17:35] request.INFO: Matched route "tl_page.2604". {"route":"tl_page.2604","route_parameters":{"_token_check":true,"_controller":"Contao\\FrontendIndex::renderPage","_scope":"frontend","_locale":"de","pageModel":"[object] (Contao\\PageModel: {})","parameters":"","_route":"tl_page.2604"},"request_uri":"https://www.ims-robotics.de/de/produkte-finden","method":"GET"} [] [2021-04-14 10:17:35] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] [2021-04-14 10:17:35] request.CRITICAL: Uncaught PHP Exception Error: "Minimum value must be less than or equal to the maximum value" at /kunden/324334_01458/webseiten/contao/2102/templates/layout/customcatalog_ims_products_list.html5 line 13 {"exception":"[object] (Error(code: 0): Minimum value must be less than or equal to the maximum value at /kunden/324334_01458/webseiten/contao/2102/templates/layout/customcatalog_ims_products_list.html5:13)"} []
Wenn ich das Inserttag mit |refresh setze, dann tritt der gleiche Fehler auf wie ohne die Flagge. Also der Merkliste werden die Items nicht hinzugefügt.
PHP-Code:if ($GLOBALS['TL_LANGUAGE'] == 'de') {
$HTMLcontent = $this->replaceInsertTags('{{insert_content::108275|uncached}}');
} else {
$HTMLcontent = $this->replaceInsertTags('{{insert_content::108517|uncached}}');
};
$HTMLcontent = $GLOBALS['TEST'];
$einklinker1 = explode("<wbr/>",$HTMLcontent); /* wenn ich die Globale verwende, dann sind es 4x Strings im Array, wenn ich |uncached verwende, ist es nur 1x String im Array */
$objLength = count($einklinker);
$einklinker2 = array_slice($einklinker1, 1, $objLength-2);
$length = count($einklinker2);
$randomArticle = random_int(0, $length-1);
$rand_stopper = $einklinker2[$randomArticle];
$i = 0;
Zuletzt geändert von filipt; 14.04.2021, 09:42.
Einen Kommentar schreiben:
-
Ok das "Problem" ist da Caching-Verhalt der Inserttags, denke ich und weil hier quasi replaceInsertTags verschachtelt angewendet wird. Contao fährt über das gesamte Template ebenfalls am Ende ein replaceInsertTags.
Setz mal deine insert_content Inserttags inkl. uncached Flagge (oder refresh): <?php echo $this->replaceInsertTags('{{insert_content::1234556|uncached}}'); ?>
https://docs.contao.org/manual/de/ar...ng/insert-tags
Einen Kommentar schreiben:
-
Ich muss mir das Phänomen noch tiefer anschauen. Ich ändere auch etwas den Template-Verlauf vom mod_customcatalog zum customcatalog_
Mir ging es in erster Linie hier um eine schnelle Problemlösung bzw. Workaround. Der Weg funktioniert quasi überall, Hauptsache die Globale wird vor dem customcatalog_ Template befüllt. Die langconfig ist in jedem Fall davor
Zuletzt geändert von Tim; 12.04.2021, 07:55.
Einen Kommentar schreiben:
-
Zitat von Tim Beitrag anzeigenHast recht. ->customcatalog feuert vor dem mod_ Template. My bad.
Du kannst es noch eine Ebene höher machen z.B. langconfig (falls so hoch deklariert, muss event. das Template direkt in /templates liegen, damit es global erkannt wird)
$GLOBALS['TEST'] = Controller::getContentElement(ID-DES-INHALTSELEMENTS);
Trotzdem danke für die schnelle Hilfe!
Einen Kommentar schreiben:
-
Hast recht. ->customcatalog feuert vor dem mod_ Template. My bad.
Du kannst es noch eine Ebene höher machen z.B. langconfig (falls so hoch deklariert, muss event. das Template direkt in /templates liegen, damit es global erkannt wird)
$GLOBALS['TEST'] = Controller::getContentElement(ID-DES-INHALTSELEMENTS);Zuletzt geändert von Tim; 09.04.2021, 13:13.
Einen Kommentar schreiben:
-
Es muss eine Globale sein.
mod_customcatalog:
$GLOBALS['custom_stopper'] = 'hallo';
$this->customcatalog (durchläuft customcatalog_)
customcatalog_
echo $GLOBALS['custom_stopper']; // hallo
Einen Kommentar schreiben:
-
Zitat von Tim Beitrag anzeigenPlatziere das inserttag ausserhalb z.B. im mod_customcatalog vor der $this->customcatalog Ausgabe und lege die HTML Ausgabe in eine Globale und greife die im foreach ab. $this->customcatalog ist quasi die Ausgabe des customcatalog_ Templates.
Jede Globale, die vorher deklariert wird ist darin aufrufbar.
Ist da was an meiner Denkweise falsch? Der Code steht vor dem $this-customcatalog.
Einen Kommentar schreiben:
-
Platziere das inserttag ausserhalb z.B. im mod_customcatalog vor der $this->customcatalog Ausgabe und lege die HTML Ausgabe in eine Globale und greife die im foreach ab. $this->customcatalog ist quasi die Ausgabe des customcatalog_ Templates.
Jede Globale, die vorher deklariert wird ist darin aufrufbar.Zuletzt geändert von Tim; 09.04.2021, 11:56.
Einen Kommentar schreiben:
-
Ich würde gerne innerhalb des Foreach Loops diesen Stopper einblenden lassen.
Ich kann das notfalls natürlich auch über JS so lösen, das das HTML dann nachträglich hinzugefügt wird. Die Lösung direkt über PHP wäre mir hier lieber, da das dann performanter im frontend abläuft.
Gibt es da keine Lösung? Weswegen tritt dieser Fehler eigentlich auf?
Einen Kommentar schreiben:
-
Platziere deine Inserttag ausserhalb des customcatalog_ Templates z.B. im mod_customcatalog Template. Das sollte besser klappen.
Einen Kommentar schreiben:
-
Zitat von Tim Beitrag anzeigenIn meiner lokalen Testumgebung kann ich es nicht reproduzieren. Ich teste es noch online gegen...
Auch online sehe ich keine Probleme: http://dev.premium-contao-themes.com/catalog-297.htmlZuletzt geändert von filipt; 09.04.2021, 11:21.
Einen Kommentar schreiben:
Einen Kommentar schreiben: