[Typo3-german] HOWTO .js JavaScript-Dateien als Template-Resources erlauben
Johannes Vockeroth
jv525052 at inf.tu-dresden.de
Tue Aug 30 19:41:22 CEST 2005
Boah, was für eine Geburt, aber ich habe es doch irgendwie herausgefunden:
Ich fand es immer blöd, dass sich JavaScript-Dateien nicht so einfach
nutzen lassen wie CSS-Stylesheets. Für das Einbinden ins TypoScript
vermisse ich z.B. neben page.includeCSS auch page.includeJS. Als
Workaround funktioniert es ja recht einfach, diese mit page.headerData
direkt als HTML einzubinden. z.B:
page.headerData.10 = TEXT
page.headerData.10.value = <script language="JavaScript"
type="text/javascript" src="fileadmin/template/meinJScript.js"></script>
Zweites Problem. Im Template-Modul lassen sich prima einfach CSS und
andere Dateien zu den Resourcen hochladen oder neu erstellen. So habe
ich all meine Dateien für das Template fein säuberlich direkt beim
Template (bzw. im uploads/tf-Ordner). Leider lassen sich JS-Dateien
weder hochladen, noch erstellen oder bearbeiten. Wie im Beispiel muss
man meinJScript.js dann irgendwo im fileadmin ablegen (und beim Export
der Seite vergessen bzw. nicht wiederfinden)
Deshalb habe ich nach einer Möglichkeit gesucht, die Liste der erlaubten
Erweiterungen zu erweitern - gar nicht so einfach. Aber Schlussendlich
kann ich jetzt .JS-Dateien hochladen, erstellen und bearbeiten.
Die Möglichkeit die Dateien hochzuladen lässt sich am einfachsten und
saubersten schaffen:
Im Konfigurations-Modul findet man im Typo3-Configuration-Array TCA
(tables.php) den Eintrag
$TCA['sys_template']['columns']['resources']['config']['allowed'] =
'gif,jpg,jpeg,tif,bmp,pcx,tga,png,pdf,ai,html,htm,ttf,pfb,pfm,txt,css,tmpl,inc,ico';
der soll um den Wert "js" erweitert werden. Dafür bearbeitet man die
Datei typo3conf/extTables.php und fügt folgende Zeile ein:
$GLOBALS['TCA']['sys_template']['columns']['resources']['config']['allowed']
=
'gif,jpg,jpeg,tif,bmp,pcx,tga,png,pdf,ai,html,htm,ttf,pfb,pfm,txt,css,tmpl,inc,ico,js';
Falls extTables.php noch komplett auskommentiert ist, muss sie, wie
darin beschrieben, noch von der typo3conf/localconf.php eingebunden
werden, indem die Zeile
$typo_db_extTableDef_script = 'extTables.php';
angehängt wird.
Damit ist es nun möglich, auch JS-Dateien im Template-Modul hochzuladen.
Man kann sie aber weder bearbeiten noch erstellen. Das liegt daran, weil
"irgendjemand" quick'n'dirty die Variable
$textExtensions = "html,htm,txt,css,tmpl,inc"; direkt im Quellcode
definiert hat.
Also sollte das gleich verbessert werden und in der TCA ein neuer
Eintrag für erlaubte Text-Erweiterungen erstellt werden, also in die
typo3conf/extTables.php insgesamt:
$GLOBALS['TCA']['sys_template']['columns']['resources']['config']['allowed']
=
'gif,jpg,jpeg,tif,bmp,pcx,tga,png,pdf,ai,html,htm,ttf,pfb,pfm,txt,css,tmpl,inc,ico,js';
$GLOBALS['TCA']['sys_template']['columns']['resources']['config']['textExtensions']
= 'html,htm,txt,css,tmpl,inc,js';
Letztlich muss noch die Wurzel allen Übels bearbeitet werden, die Datei
typo3/ext/tstemplate/ts/index.php. Dort findet sich auch die böse Zeile
$textExtensions = "html,htm,txt,css,tmpl,inc";, die aber erstmal so
stehen bleiben kann, denn man überschreibt sie einfach in der darauf
folgenden init()-Funktion, irgendwo hinter parent::init(); (Zeile 70) mit
$this->textExtensions =
$TCA["sys_template"]["columns"]["resources"]["config"]["textExtensions"];
Fertig. Jetzt können JS-Dateien einfach mit im Template erstellt und
bearbeitet werden. Und falls mal irgendwann eine Erweiterung dazu kommt,
braucht nur noch die TCA entsprechend geändert werden.
Legt man jetzt eine Datei "meinJScript.js" an, muss diese im TypoScript
dann mit
page.headerData.10.value = <script language="JavaScript"
type="text/javascript" src="uploads/tf/meinJScript.js"></script>
eingebunden werden, sie liegt also in dem Pfad, der in der TCA als
uploadfolder angegeben ist.
Ein Joker wie bei CSS-Dateien, also etwa meinJScript*.js funktioniert so
natürlich noch nicht. Auch die Reihenfolge von möglichen Duplikaten
spielt noch keine Rolle. Das kommt dann hoffentlich mit page.includeJS :)
Ich hoffe, das nutzt jetzt jemanden etwas. Vielleicht gibt es ja auch
Leute die so lange danach suchen mussten wie ich. Ich freue mich dann
aber immer, wenn ich solche Texte im Listenarchiv finde. Und wenn jetzt
noch jemand darauf antwortet, damit der Text nicht durch den "Only
answered or rated posts."-Filter fliegt, würde ich mich freuen.
Natürlich auch darüber, wenn jemand das mal ausprobiert und ggf. berichtigt.
Johannes
More information about the TYPO3-german
mailing list