Huhu,
ich möchte die Code-Ausgabe im Frontend, speziell die Head-Angaben, etwas sauberer sortieren (Zeilenumbrüche, Einrückungungen, etc.), ohne den TYPO3-Core anzupacken... Ich habe mich nun zum ersten Mal an eine XCLASS gewagt...
Ich habe im Ordner /typo3conf/ die Datei "class.ux_tslib_pagegen.php" angelegt und binde sie in localconf.php folgendermaßen ein:
$TYPO3_CONF_VARS["FE"]["XCLASS"]["tslib/class.tslib_pagegen.php"] = PATH_typo3conf."class.ux_tslib_pagegen.php";
Meine XCLASS hat folgenden Inhalt:
<?
class ux_TSpagegen extends TSpagegen {
function renderContentWithHeader($pageContent) {
}
}
?>
Leider wird die Funktion komplett ignoriert, habe zum Testen auch einfach mal versucht den kompletten Seiteninhalt per "$GLOBALS['TSFE']->content = '';" zu löschen. Das heisst, dass immernoch die alte Klasse/Funktion benutzt wird. PHP-Fehler werden allerdings sofort erkannt, was zeigt, dass die Datei immerhin eingebunden wird.
Hat jemand ne Idee?
Dank im Vorraus.
Bist Du Dir sicher, das die Var PATH_typo3conf gefüllt ist ?
Ich kenne das nur von Extensions, also der Form
$TYPO3_CONF_VARS["FE"]["XCLASS"]["tslib/class.tslib_pagegen.php"] = t3lib_extMgm::extpath($_EXTKEY)."class.ux_tslib_pagegen.php";
Damit die Klasse benutzt wird, muss sie instanziert werden, also
t3lib_div::makeInstance($classname)
steffenK schrieb
Bist Du Dir sicher, das die Var PATH_typo3conf gefüllt ist ?
Ich kenne das nur von Extensions, also der Form
Ja, er bindet meine Klasse ja auf jeden Fall ein, wie ich sagte, da PHP-Fehler sofort angezeigt werden.
steffenK schrieb
Damit die Klasse benutzt wird, muss sie instanziert werden, also
Folgendermaßen stehts im Doc auf typo3.org, wo ein XCLASS-Beispiel anhand von tslib_cObj demonstriert wird:
The last thing which remains is to instantiate the class ux_tslib_cObj instead of tslib_cObj. This is done automatically, because everywhere tslib_cObj is instantiated, it is first examined if ux_tslib_cObj exists and if so, that class is instantiated instead!
Daher dachte ich, dass im TYPO3-Code generell makeInstance benutzt wird, welches zuerst auf die Existenz einer XCLASS prüft.
ich habe es noch nie gemacht, daher kann ich auch nicht auf Erfahrungswerte zurückgreifen, finde die Methode aber sehr interessant.
Ich beziehe mich auf Kai Laborenz - Das Handbuch für Entwickler, dort steht es nur kurz und knapp, aber so wie ich beschrieben habe. Dort steht u.a., das jede Klasse nur einmal erweitert werden kann. Wenn also schon eine Klasse diese Methode mit der pagegen durchführt, kann Deine Lösung nicht mehr gehen. Am besten Du lässt Dir das
$TYPO3_CONF_VARS["FE"]["XCLASS"]-Array mal ausgeben. Du hast aber die Möglichkeit, diese Erweiterung wieder zu erweitern, also mit ux_ux_... usw.
Am Ende steht eben, es muss mit makeInstance instanziert werden, was für mich soviel heisst, das man es selber machen muss.
Sonst bau doch erstmal einfache Beispiele aus der Doku nach.
Schade, gerade TSpagegen wird NICHT über t3lib_div::makeInstance($classname) initialisiert...
Ich habe es jetzt anders gelöst:
page.config.pageGenScript = fileadmin/pagegen.php
War dann doch so einfach :o