Contao-Camp 2024
Ergebnis 1 bis 7 von 7

Thema: HOOKS - outputFrontendTemplate oder parseFrontendTemplate

  1. #1
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard HOOKS - outputFrontendTemplate oder parseFrontendTemplate

    Klingt jetzt vielleicht blöd aber kann mir einer mal mit anderen Worten als in der Doku erklären was genau da der Unterschied ist?
    Also außer der Ausführung.
    Ist es egal welchen man nimmt denn zurück kommt doch identisches.
    Liebe Grüße
    WebRoxx


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

    Standard

    outputFrontendTemplate wird ausgeführt, wenn $objTemplate->output() ausgeführt wird, also wenn ein Template direkt an den Browser ausgegeben wird. parseFrontendTemplate wird ausgeführt, wenn ein $objTemplate->parse() ausgeführt wird, also wenn es geparsed und als string dann weiterverarbeitet wird. Bei ->output() wird aber auch zwangsläufig parseFrontendTemplate ausgeführt.
    Geändert von Spooky (31.03.2016 um 09:47 Uhr)

  3. #3
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard

    Ok, so richtig steige ich da nicht dahinter

    Aber trotzdem Danke für dein Versuch

    Also ist es wirklich nur so das der Unterschied sich darauf bezieht wenn es ausgeführt wird?
    Liebe Grüße
    WebRoxx


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

    Standard

    Vielleicht macht es diese Erklärung deutlicher: outputFrontendTemplate wird nur in PageRegular::generate ausgeführt - oder mit anderen Worten, es wird (im Core) nur für das fe_page Template ausgeführt.

  5. #5
    Contao-Nutzer
    Registriert seit
    15.03.2010.
    Ort
    AT
    Beiträge
    204

    Standard

    Weil ich auch immer wieder drüber stolpere und nachschaun muss:

    $GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] liefert nur den $strBuffer vom "fe_page" bzw. "fe_custom" wenn ein eigenes verwendet wird.
    Diesen $strBuffer kann man anpassen.

    $GLOBALS['TL_HOOKS']['parseFrontendTemplate'][] liefert den $strBuffer jedes einzelnen Templates, das auf der aktuellen Seite verwendet wird.
    D.H.: Auf einer Seite, die Navigation und ein Content-Element Text enthält wird der $strBuffer für mod_navigation, nav_default, mod_article und ce_text ausgegeben.
    Auch hier wird wieder "fe_page" bzw. "fe_custom" geparsed ausgegeben.
    Außerdem werden auch die im Layout inkludierten Templates wie j_accordion, j_tablesort usw... ausgegeben.

    Die Hooks findet man in: src\Resources\contao\classes\FrontendTemplate.php
    Geändert von heyho (27.10.2018 um 19:25 Uhr)

  6. #6
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Zitat Zitat von heyho Beitrag anzeigen
    Weil ich auch immer wieder drüber stolpere und nachschaun muss:

    $GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] liefert nur den $strBuffer vom "fe_page" bzw. "fe_custom" wenn ein eigenes verwendet wird.
    Diesen $strBuffer kann man anpassen.

    $GLOBALS['TL_HOOKS']['parseFrontendTemplate'][] liefert den $strBuffer jedes einzelnen Templates, das auf der aktuellen Seite verwendet wird.
    D.H.: Auf einer Seite, die Navigation und ein Content-Element Text enthält wird der $strBuffer für mod_navigation, nav_default, mod_article und ce_text ausgegeben.
    Auch hier wird wieder "fe_page" bzw. "fe_custom" geparsed ausgegeben.
    Außerdem werden auch die im Layout inkludierten Templates wie j_accordion, j_tablesort usw... ausgegeben.

    Die Hooks findet man in: src\Resources\contao\classes\FrontendTemplate.php
    War selbst gerade drüber gestolpert. parseFrontendTemplate scheint sich nicht auf die komplette Ausgabe einer Seite zu beziehen. So funktionierte eine Ersetzung in ce_chesstable (eigene Erweiterung), aber nicht in ce_table. Kann daran liegen, das der zu ersetzende String in ce_table ein Inserttag ist und vorher noch durch einen Inserttag-Parser muß und der zum Zeitpunkt von parseFrontendTemplate noch gar nicht gearbeitet hat. Also muß ich es jetzt mit outputFrontendTemplate versuchen und hoffen, das alle anderen Parser schon durch waren.
    outputFrontendTemplate scheint direkt vor der Ausgabe an den Browser zu arbeiten und parseFrontendTemplate noch weit vorher.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  7. #7
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    outputFrontendTemplate kommt zu früh ins Spiel. Zu dem Zeitpunkt sind die Inserttags der gleichnamigen Erweiterung noch nicht ersetzt.

    Aus der config.php der (3er) Erweiterung inserttags:
    PHP-Code:
    $GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = array('InsertTagsHelper''replaceCachedTags');
    $GLOBALS['TL_HOOKS']['outputBackendTemplate'][] = array('InsertTagsHelper''replaceCachedTags');
    $GLOBALS['TL_HOOKS']['replaceInsertTags'][] = array('InsertTagsHelper''replaceDynamicTags'); 
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

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
  •