Contao-Camp 2024
Ergebnis 1 bis 8 von 8

Thema: 3.5.35 changelanguage chache

  1. #1
    Contao-Nutzer
    Registriert seit
    24.12.2015.
    Beiträge
    14

    Standard 3.5.35 changelanguage chache

    Hallo,
    ich habe folgende Situation:

    Ich haben in einem Template mittels $this->replaceInsertTags('{{insert_module::7}}', false}} //
    den Sprachenwechsler eingebaut.

    Ist der Cache deaktiviert, funktioniert alles fehlerfrei. Bei aktiviertem Cache erhalte ich folgende Fehlermeldung:

    Fatal error: Uncaught exception TypeError with message Argument 3 passed to Terminal42\ChangeLanguage\Navigation\NavigationFac tory::__construct() must be an instance of Contao\PageModel, null given, called in /mnt/web323/a1/44/5205744/htdocs/contao-3.5/system/modules/changelanguage/library/Terminal42/ChangeLanguage/FrontendModule/ChangeLanguageModule.php on line 69 thrown in system/modules/changelanguage/library/Terminal42/ChangeLanguage/Navigation/NavigationFactory.php on line 42
    #0 system/modules/changelanguage/library/Terminal42/ChangeLanguage/FrontendModule/ChangeLanguageModule.php(69): Terminal42\ChangeLanguage\Navigation\NavigationFac tory->__construct(Object(Terminal42\ChangeLanguage\Page Finder), Object(Terminal42\ChangeLanguage\Helper\LanguageTe xt), NULL)
    #1 system/modules/core/modules/Module.php(287): Terminal42\ChangeLanguage\FrontendModule\ChangeLan guageModule->compile()
    #2 system/modules/haste/library/Haste/Frontend/AbstractFrontendModule.php(52): Contao\Module->generate()
    #3 system/modules/changelanguage/library/Terminal42/ChangeLanguage/FrontendModule/ChangeLanguageModule.php(50): Haste\Frontend\AbstractFrontendModule->generate()
    #4 system/modules/core/library/Contao/Controller.php(321): Terminal42\ChangeLanguage\FrontendModule\ChangeLan guageModule->generate()
    #5 system/modules/core/library/Contao/InsertTags.php(447): Contao\Controller::getFrontendModule('7')
    #6 system/modules/core/library/Contao/Controller.php(692): Contao\InsertTags->replace('', true)
    #7 templates/nav_main.php(18): Contao\Controller::replaceInsertTags('{{insert_mod ule...', true)
    #8 system/modules/core/library/Contao/InsertTags.php(1113): include('/mnt/web1234/a1/...')
    #9 system/modules/core/library/Contao/Controller.php(692): Contao\InsertTags->replace('...', false)
    #10 system/modules/core/controllers/FrontendIndex.php(477): Contao\Controller::replaceInsertTags('...', false)
    #11 system/modules/core/controllers/FrontendIndex.php(28): Contao\FrontendIndex->outputFromCache()
    #12 index.php(20): Contao\FrontendIndex->__construct()
    #13 {main}

    $this->replaceInsertTags('{{insert_module::7}}', true}} erzeugt den selben Fehler.

    Danke für Eure Antworten/Tipps

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.028
    Partner-ID
    10107

    Standard

    Du musst
    PHP-Code:
    <?= \Contao\Controller::getFrontendModule(7?>
    verwenden.

  3. #3
    Contao-Nutzer
    Registriert seit
    24.12.2015.
    Beiträge
    14

    Standard

    das hatte ich auch schon probiert, erzeugt aber den selben Fehler

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.028
    Partner-ID
    10107

    Standard

    Wie hast du das Template eingebunden?

  5. #5
    Contao-Nutzer
    Registriert seit
    24.12.2015.
    Beiträge
    14

    Standard

    es ist per {{file::...}} in ein Modul eingefügt

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.028
    Partner-ID
    10107

    Standard

    Zitat Zitat von MirkoK Beitrag anzeigen
    es ist per {{file::...}} in ein Modul eingefügt
    Da liegt das Problem. {{file::*}} Insert Tags werden automatisch nie gecached - daher wird das Changelanguage Modul erst generiert, wenn die Seite aus dem Cache geladen ist. Das Modul unterstützt das aber nicht - weil es bspw. das Page Objekt braucht, welches nicht vorhanden ist, wenn eine Seite aus dem Cache kommt.

    Erkläre deine Struktur mal genauer, irgendwie hört sich das sehr verschachtelt an . Wenn du einfach nur ein .html5 Template als Modul in einem Seitenlayout einbinden willst, solltest du so vorgehen:

    1. Erstelle ein Template, zB. mit dem Namen mod_html_myTemplate.html5.
    2. Fülle das Template mit dem Code den du brauchst (wie zB <?= \Contao\Controller::getFrontendModule(7) ?>).
    3. Erstelle ein neues Modul vom Typ "Eigener HTML-Code".
    4. Wähle dein zuvor erstelltes Template unter Individuelles Template aus.
    5. Binde das HTML Modul im Seitenlayout ein.

  7. #7
    Contao-Nutzer
    Registriert seit
    24.12.2015.
    Beiträge
    14

    Standard

    ja verschachtelt ist es, weil ich in einem Modul ein Template einfüge, welches wieder ein Modul enthält

    OK ich habe ein Modul nav_main mit eigenem Html: nav_main
    hier wird das Template per {{file:: }} eingebunden.
    Dieses enthält eine Navigation die manuell erstellt ist. Dort möchte ich einen Sprachenwechsler einbauen. Dieser kommt wieder aus meinem Modul modSprache

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.028
    Partner-ID
    10107

    Standard

    Wie gesagt, du musst auf den {{file::*}} Insert Tag verzichten.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •