Home > Enterprise >  TypoScript Insert HeaderData before Style Definitions
TypoScript Insert HeaderData before Style Definitions

Time:08-11

I need to insert some headerdata before Style Definitions. To be more precise I want to insert my google tag manager script before my style sheets due to the loading order of my font-family. At the moment I do it like this:

page.includeCSS {
file1 = fileadmin/templates/css/bootstrap.css
page.includeCSS.file1.media = all 
file2 = fileadmin/templates/css/style.css
page.includeCSS.file2.media = all 
file3 = fileadmin/templates/fontawesome/css/all.min.css 
page.includeCSS.file3.media = all 
}

page.headerData {            
    10 = TEXT 
    10.value (
       <script data-cookieconsent="ignore">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
          new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
          j=d.createElement(s),dl=l!='dataLayer'?'&l=' l:'';j.async=true;j.src=
          'https://www.googletagmanager.com/gtm.js?id=' i dl;f.parentNode.insertBefore(j,f);
          })(window,document,'script','dataLayer','GTM-XXXXXXXXXX');</script>
    )
}

According to the Typo3 Documentation the headerdata "By default, gets inserted after all the style definitions." I think that means, that it also can be inserted before. But I don't know how. I also don't want to put the css in the headerdata because I cannot concatenate and compress them there.

CodePudding user response:

If you want it at first position you could modify the <head> tag:

page.headTag (
<head>
<script data-cookieconsent="ignore">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
          new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
          j=d.createElement(s),dl=l!='dataLayer'?'&l=' l:'';j.async=true;j.src=
          'https://www.googletagmanager.com/gtm.js?id=' i dl;f.parentNode.insertBefore(j,f);
          })(window,document,'script','dataLayer','GTM-XXXXXXXXXX');</script>
)

A cleaner way would be to reorder the header elements with typoscript:

config {
    pageRendererTemplateFile = EXT:site_config/Resources/Private/Templates/templateFile.html
}

and then copy the file you can find under typo3/sysext/core/Resources/Private/Templates/PageRenderer.html to that location and change the order of the markers.
(Yes, it is an old style marker template file)

Now you can reorder addditionalHeaders in front of any CSS or JS.

  • Related