[Typo3-german] HOWTO .js JavaScript-Dateien als Template-Resources erlauben

Stefan Geith typo3dev at geithware.de
Wed Aug 31 11:17:18 CEST 2005


Hallo Johannes,

trag das doch mal auf bugs.typo3.org als Patch ein ...

-

Stefan


Johannes Vockeroth schrieb:
> 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
> 
> 
> _______________________________________________
> Typo3-german mailing list
> Typo3-german at lists.netfielders.de
> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german
> 




More information about the TYPO3-german mailing list