Guten Morgen,
Beim Generieren des Frontends (betrifft für mich Contao 3.5x - 4.3) in fe_page wird ja per
<?=$this->stylesheets?> bzw <?=$this->head?> bestimmte (vorher z.B. in $GLOBALS['TL_CSS'] bzw in $GLOBALS['TL_HEAD']) gespeicherte Daten verarbeitet und ausgegeben.
Nun habe ich aber das Problem, dass ich (SEO-bedingt) die generierten
Code:
<link rel="stylesheet" href="assets/css/beee02e5c1d2.css">
<script src="assets/js/9e4039d8a0c3.js"></script>
vor </body> setzen möchte, die aber ebenso in $GLOBALS['TL_HEAD'] definierten
Code:
<link rel="alternate" hreflang="fr" href="https://www.[...]/">
<link rel="alternate" hreflang="de" href="https://www.[...]/de/[...]">
<link rel="apple-touch-icon" sizes="57x57" href="files/layout_[...]/favicon/apple-icon-57x57.png">
im Head lassen möchte.
Mein erster, bequemster (aber auch dreckigster) Ansatz wäre, bei der Ausgabe der Stylesheets reinzugrätschen:
<?=preg_replace("/.../","...",$this->stylesheets) ?>
Das funktioniert aber nicht, da preg_replace auf das generierte Objekt nicht greift. Vermutlich wird erst das preg_replace und anschließend die Generierung der Stylesheets ausgeführt.
Gibt es eine Möglichkeit, die stylesheet-Einträge an dieser Stelle direkt zu parsen und nachträglich zu verändern?
Mein zweiter Ansatz wäre, die (hier leider für mich fälschlicherweise) in $GLOBALS['TL_HEAD'] generierte CSS-Datei aus $GLOBALS['TL_HEAD'] in $GLOBALS['TL_CSS'] zu transferieren. Leider sind diese Dateien in initconfig.php bzw localconfig.php noch gar nicht in den Array reingeschrieben, d.h. ich weiß nicht, an welcher Stelle ich dieses Umschreiben vornehmen soll.
Als dritter Ansatz wäre, einen Contao-Hook zu verwenden und die Methode der Generierung des Stylesheets updatesicher zu erweitern und manuell abzuändern. Da brauche ich aber Starthilfe, hier kenne ich mich nicht wirklich aus, welche Hooks ich verwende und welche Methoden ich wie (in initconfig.php?) hinzufügen soll.
Und schließlich wäre von dort es nur ein kleiner Schritt, eine Erweiterung zu schreiben, die diese Umschreibungen vornimmt. Auch hier fehlen mir leider bisher die Erfahrungen.
Könnt ihr mir vielleicht kurz erklären, wie ich da am Besten oder am Einfachsten (von mir aus auch dreckig...) reingrätschen kann?
Und habt ihr vielleicht Literatur, anhand ich dieses Template-Generierungs-Kram (was wird wann abgearbeitet, wie funktioniert es mit den Templates ce_text, mod_news, mod_navigation, fe_page, ... in welcher Reihenfolge (von innen nach außen?) wird da was abgearbeitet und wie übergibt man Variablen und Klassen am Besten von innen nach außen oder von außen nach innen?
Ich würde es gerne etwas fundierter verstehen, aktuell pfusche ich da aber meistens nur planlos rum...
Lesezeichen