Contao-Camp 2024
Ergebnis 1 bis 18 von 18

Thema: inserttag funktoniert auf normalen Seiten, wirft aber Fehler in Event teasern

  1. #1
    Contao-Nutzer
    Registriert seit
    14.11.2019.
    Beiträge
    47

    Standard inserttag funktoniert auf normalen Seiten, wirft aber Fehler in Event teasern

    inserttag funktioniert auf normalen Seiten, wirft aber Fehler in Event teasern

    Ich übernehme Eventdaten aus einem externen Planungssystem. Dabei schreibe ich weitere Metadaten in den Teasertext. Zum Beispiel

    Bei rückfragen bitte {{bgk-phone::1234456}} anrufen



    Wenn ich das auf einer Seite ausgebe ist alles gut, das inserttag wird verarbeitet und es entsteht nirgends eine Fehlermeldung.

    Wenn ih das im Teaser eines Events ausgebe, kommt wird das inserttag ebenfalls korrekt aufgelöst, ich bekomme aber im Systemlog eine Fehlermeldung.

    In einem Nachrihtenteaser tritt das Problem nicht auf.

    hier die Fehlermeldung:


    ID: 30168
    Datum: 07.08.2020 12:53
    Ursprung: Frontend
    Kategorie: ERROR
    Benutzer: anon.
    Details: Unknown insert tag {{bgk-phone:12234}}
    Funktion: Contao\InsertTags::doReplace
    IP-Adresse: 217.87.52.0
    Browser: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36

    Die Methode zur Auflösung ist

    PHP-Code:
    class BGKInsertTagListener
    {
        public function 
    onReplaceInsertTags(string $tag)
        {
            
    $chunks explode('::'$tag);
            
    $methods = [
                 
    "bgk-phone" => "handlephone",
            ];

            
    $handler $methods[$chunks[0]];

            if (isset(
    $handler)) {
                return 
    $this->$handler($chunks);
            } else {
                return 
    false;
            }
        }

        private function 
    handlephone($chunks)
        {
            
    $phone $chunks[1];

            
    $result "<span title=\"Telefon Kontaktperson\" class=\"icon bgk-fon\">{$phone}</span>";
            return 
    $result;
        }
    }

    $GLOBALS['TL_HOOKS']['replaceInsertTags'][] = array(
        
    'App\Eventlistener\BGKInsertTagListener',
        
    'onReplaceInsertTags'
    ); 
    Geändert von bwl21 (17.08.2020 um 18:16 Uhr)

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

    Standard

    Sieh dir die Fehlermeldung mal genau an
    Zitat Zitat von bwl21 Beitrag anzeigen
    Details: Unknown insert tag {{bgk-phone:12234}}
    Da fehlt ein colon.

  3. #3
    Contao-Nutzer
    Registriert seit
    14.11.2019.
    Beiträge
    47

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Sieh dir die Fehlermeldung mal genau an Da fehlt ein colon.
    Danke für den hinweis. Aber daran liegt es nicht. Das problem tritt auch mit zwei colons auf.

    Wie gesagt, dass inserttag wird verarbeitet, aber die Fehlermeldung kommt trotzdem - und zwar nur, wenn das in einem Event-Teaser steht.

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

    Standard

    Poste die neue Fehlermeldung im System Log.

  5. #5
    Contao-Nutzer
    Registriert seit
    14.11.2019.
    Beiträge
    47

    Standard

    ID: 31370
    Datum: 07.08.2020 19:01
    Ursprung: Frontend
    Kategorie: ERROR
    Benutzer: anon.
    Details: Unknown insert tag {{bgk-phone::123456}}
    Funktion: Contao\InsertTags::doReplace
    IP-Adresse: 217.87.52.0
    Browser: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36

    Es könnte an folgendem liegen .. ich definiere meine inserttags in einem PHP-file welches ich im Seitentemplate per {{file::bgk-installinserttags.php}} einbette. Nun könnte es sein, dass das zu spät ist, d.h. dass contao bei events versucht, die inserttags schon einmal aufzulösen bevor das Seitentemplate lädt welches dann erst die tags lädt. Ich habe versucht, zu Beginn des event templates zu laden, hat aber nicht den gewünschten Effekt gebracht.

    Wenn ich am Anfang des Teasers {{file::bgk-installinserttags.php}} einfüge, dann tritt das Problem nicht mehr auf.

    Es ist eine Anwendung mit mehreren Domains und ich wollte die tags nur für die eine Domain (für die ich zuständig bin) laden. Daher wollte ich es nicht in system/modules installieren.
    Geändert von bwl21 (07.08.2020 um 19:50 Uhr)

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

  7. #7
    Contao-Nutzer
    Registriert seit
    14.11.2019.
    Beiträge
    47

    Standard

    Vielen Dank, diese Seiten lese ich rauf und runter ... sie sind für mich noch ziemlich kompakt, weil die Beispiele immer nur Fragmente sind.

    Wenn ich das in sysem/modules/mymodule/config/config.php installier, dann muss ich bei jeder Änderung den cache resetten. Ich habe verscuht, per require_once eine Inserttags zu installieren, aber die coonfig wird in einem anderen Vernzeichnis ausgeführt und daher stimmt dann der Pfad zu meiner include-Datei nicht.

    Meine derzeitige Lösung ist, in den Events ( die werden ohnehin durch eine Datenübernahme angelegt ) meine Inserttags nochmal zu registrieren. Damit läuft alles ...

    Vielen Dank.

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

    Standard

    In der Dokumentation steht nichts davon, dass du etwas in system/modules machen sollst. Das wäre der Weg eine alte Contao 3 Erweiterung manuell zu installieren.

    Halte dich für die Umsetzung eines replaceInsertTags Hook am besten an die Dokumentation. Unter Contao 4.9+ musst du dafür nur genau eine Datei anlegen.

  9. #9
    Contao-Nutzer
    Registriert seit
    14.11.2019.
    Beiträge
    47

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    In der Dokumentation steht nichts davon, dass du etwas in system/modules machen sollst. Das wäre der Weg eine alte Contao 3 Erweiterung manuell zu installieren.

    Halte dich für die Umsetzung eines replaceInsertTags Hook am besten an die Dokumentation. Unter Contao 4.9+ musst du dafür nur genau eine Datei anlegen.
    Ja, das möchte ich gerne - dazu muss ich die Dokumentation aber verstehen (ich bin noch auf dem Stand "wenn man weiß wie es geht, versteht man auch die Dokumentation"). Die Dokumentation stellt viele Fragmente dar, ohne zu sagen, in welchen Dateien diese Fragmente stehen sollen. Das macht es für mich schwierig, das ganze zu verstehen.

    Wir sind noch bei Contao 4.4.9. Es ist eine Multi-domain-Site, und ich möchte meine Aktivitäten auf eine domain, ggf. sogar auf eine Seite begrenzen (um unerwünschte Nebenwirkungen zu vermeiden). Und ich möchte gerne die Funktion _meiner_ Inserttags ändern können, ohne den cache neu aufzubauen.

    Daher habe ich eine Datei "installinserttags.php", welche nur aufgerufen werden soll, wenn die Seite zu einer bestimmten Domain gehört. Diese rufe ich entweder vom Seitenlayout der Domain oder gar mit einem HTML-Inhaltselement auf. Ich verstehe schon, dass das nicht unbedingt der "Contao" way ist ...

    für 4.4 lese ich in https://docs.contao.org/dev/framewor...-configuration, dass ich die "array konfiguration" nehmen soll. Dort steht "your config.php". Ich weiß aber nicht, welche der verschiedenen config.php hier gemeint ist.

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

    Standard

    Zitat Zitat von bwl21 Beitrag anzeigen
    Dokumentation stellt viele Fragmente dar, ohne zu sagen, in welchen Dateien diese Fragmente stehen sollen.
    Das seht (meist) immer ganz oben als Kommentar im Code Beispiel.



    Zitat Zitat von bwl21 Beitrag anzeigen
    für 4.4 lese ich in https://docs.contao.org/dev/framewor...-configuration, dass ich die "array konfiguration" nehmen soll. Dort steht "your config.php". Ich weiß aber nicht, welche der verschiedenen config.php hier gemeint ist.
    Siehe https://docs.contao.org/dev/getting-...g-development/

    Unter Contao 4.4 also app/Resources/contao/config/config.php. Siehe auch https://docs.contao.org/dev/reference/hooks/

  11. #11
    Contao-Nutzer
    Registriert seit
    14.11.2019.
    Beiträge
    47

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das seht (meist) immer ganz oben als Kommentar im Code Beispiel.



    Siehe https://docs.contao.org/dev/getting-...g-development/

    Unter Contao 4.4 also app/Resources/contao/config/config.php. Siehe auch https://docs.contao.org/dev/reference/hooks/
    Vielen Dank für die Hinweise und deine Geduld.

    Wird diese config - Datei dann auch in den cache gelegt (var/cache/prod/contao/config/config.php?) Muss ich bei Änderungen daran den cache resetten?
    Kann ich in dieser config-Datei mit require_once in Abhängigkeit von der aufgerufenen Domain meine Scripte einbinden?

    PHP-Code:
    if("mydomain.de" == $_SERVER['HTTP_HOST']){require_once('path-to-mytemplates'/installinserttags.php'} 

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

    Standard

    Zitat Zitat von bwl21 Beitrag anzeigen
    Wird diese config - Datei dann auch in den cache gelegt (var/cache/prod/contao/config/config.php?) Muss ich bei Änderungen daran den cache resetten?
    Grundsätzlich ja, außer du bist im Debug-Modus.


    Zitat Zitat von bwl21 Beitrag anzeigen
    Kann ich in dieser config-Datei mit require_once in Abhängigkeit von der aufgerufenen Domain meine Scripte einbinden?
    Ich verstehe leider nicht was du damit meinst bzw. warum diese config Datei übehraupt requiren willst. Die wird von Contao gelesen, nicht von deinem Code.

  13. #13
    Contao-Nutzer
    Registriert seit
    14.11.2019.
    Beiträge
    47

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Grundsätzlich ja, außer du bist im Debug-Modus.


    Ich verstehe leider nicht was du damit meinst bzw. warum diese config Datei übehraupt requiren willst. Die wird von Contao gelesen, nicht von deinem Code.
    diese möchte ich nicht "requiren", sondern in dieser möchte ich andere "requiren ..."

    PHP-Code:
    // app/Resources/contao/config/config.php

    if("www.mydomain.de" == $_SERVER['HTTP_HOST']){require_once('path-to-mytemplates'/installinserttags.php'} 
    Die auf diese Weise eingefügte Datei wird ja nicht gecached - wenn ich das richtig sehe.

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

    Standard

    Warum willst du das machen?

  15. #15
    Contao-Nutzer
    Registriert seit
    14.11.2019.
    Beiträge
    47

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Warum willst du das machen?
    ich möchte Wirkung (und Nebenwirkung) auf die von mir gepflegte Domain begrenzen. Aus verschidenden gründen habe ich keinen Zugriff auf den Contao-Manager (zum Cache reset).
    Man kann das sicher in Frage stellen ...

    Trotzdem zumindest zum Verständnis .. würde das funktionieren?

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

    Standard

    Die Abfrage auf die Domain solltest du direkt im Service machen.

    Wenn du aber keinen Zugriff auf den Contao Manager hast, und daher vermutlich auch keinen SSH Zugriff, dann fehlt dir aber generell die Möglichkeit den gesamten Applikationscache neu aufzubauen. Wenn du daher immer nur den Ordner var/cache manuell löschst, dann läuft die Website nie so schnell wie sie könnte. Insofern solltest du dich also zuerst um dieses Problem kümmern

    Aber wie implementierst du denn dann überhaupt deinen Hook? Dafür brauchst du doch zumindest SSH oder FTP Zugriff. Und wenn du das hast, hast du auch Zugriff zum Contao Manager.

  17. #17
    Contao-Nutzer
    Registriert seit
    14.11.2019.
    Beiträge
    47

    Standard

    Ich habe einen FTP-Zugriff auf das Templates Verzeichnis. Dort kann ich PHP Dateien hochladen, die ich mit {{file:}} einbinde. Dort installiere ich die Hooks und das funktioniert sehr gut! Wenn ich einen (art von Erweiterungspunkt) bekomme in dem in system/config.php ein 'include_once()" steht, dann kann ich hooks ggf. darüber installieren. Es ging mir nur um die Frage, ob das funktionieren würde.

    Aber fürs erste bleiben wir erst mal bei dem was wir haben.

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

    Standard

    Achso ja... sorry, bei solchen Situationen kann ich dir nicht helfen, weil das sind ja Workarounds die nur zu mehr Problemen führen werden. Wenn du an einer Webseite entwickelst brauchst du natürlich auch die richtigen Zugänge.

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
  •