Ankündigung

Einklappen
Keine Ankündigung bisher.

4.9 Merkliste Hinzufügen funktioniert nicht, wenn "replaceInsertTags" im Template

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von Tim Beitrag anzeigen
    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);
    Nachdem ich alle html5 templates die im CE benötigt sind auf die templates/ ebene gelegt habe, funktioniert es jetzt so wie es sollte. Richtig fühlt sich diese Lösung nicht wirklich an. Falls du eine Alternative zu dem Globale setzen in der Langconfig findest, nehme ich diese gerne irgendwann auch in meine templates.

    Trotzdem danke für die schnelle Hilfe!

    Kommentar


    • #17
      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, 08:55.
      http://www.premium-contao-themes.com

      Kommentar


      • #18
        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




        http://www.premium-contao-themes.com

        Kommentar


        • #19
          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)"} []
          Zeile 13 in meinem Code ist die Funktion random_int die nicht normal funktioniert, da die Variable $HTMLContent (der inserttag) hier nicht mehr über explode in ein Array umgewandelt wird. Also davor hat explode("<wbr/>",$HTMLcontent); 4x Elemente in ein Array gepackt, jetzt mit dem uncached Flag ist es nur noch 1x Element im Array. Kann man ein uncached Inserttag nicht exploden nach einem String?

          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($einklinker11$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, 10:42.

          Kommentar


          • #20
            $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.
            http://www.premium-contao-themes.com

            Kommentar


            • #21
              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.
              Ich hab hier nur zur Veranschaulichung beide verschiedene Wege HTMLcontent zu befüllen drin gelassen. Zum testen nehme ich natürlich immer das jeweilig andere raus.

              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.

              Kommentar


              • #22
                Kann sein, dass getContentElement noch mehr reinpackt. mit |uncached funktioniert es in jedem Fall direkt im Template.
                http://www.premium-contao-themes.com

                Kommentar


                • #23
                  Zitat von Tim Beitrag anzeigen
                  Kann sein, dass getContentElement noch mehr reinpackt. mit |uncached funktioniert es in jedem Fall direkt im Template.
                  Der Custom-Code funktioniert ohne Fehler ohne den |uncached Flag, komischerweise. Also liegt es nicht an dem was getContentElement noch dazupacken könnte.

                  Kommentar

                  Lädt...
                  X