Zum Inhalt springen

Javascript-Dateien in die eigene Extension einbinden *Lösung*

Erstellt am 22. Mai 2007 · 10 Antworten · letzte Antwort am 24. Mai 2007

Tags: Frage

NickD ·

hallo,

ich habe mich mit dem thema etwas beschäftig und bin auf eine ganz gute lösung gekommen. falls jemand probleme mit der einbindung von javascripts hat, ist er hier genau richtig. klar kann man auch diverse extension nutzen, jedoch ist meine lösung schöner, da über die seiteneigenschaften keine javascript-dateien mehr ausgewählt werden müssen und nach dem einbinden und installieren der extension alles so eingebunden ist, wie gewollt.

ich habe dafür eine funktion geschrieben, die es erlaubt x dateien von typ *.js einzubinden.

function main($content,$conf)	
{
		$this->conf=$conf;
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();
		$this->pi_USER_INT_obj=1;

 $js .= $this->includeJavaScript("/js/","01.js");
 $js .= $this->includeJavaScript("/js/","02.js");
 $js .= $this->includeJavaScript("/js/","03.js");
 $js .= $this->includeJavaScript("/js/","04.js");    

 $GLOBALS['TSFE']->additionalHeaderData[$this->extKey] = $js;
}

function includeJavaScript($path,$file) 
{
   return '<script src="'.t3lib_extMgm::siteRelPath($this->extKey).dirname($this->scriptRelPath).$path.$file.'" type="text/javascript"></script>';
}

in diesem fall, liegen meine javascripts im selben order wie die extension-klasse (p1), in einem weiteren, mit dem namen "/js/". also /typo3conf/ext/tx_meineExtension/p1/js/

ich hoffe das ist verständlich 🙂

lg und viel spaß, nick

Norman2k ·

Vielleicht seh ich den Sinn gerade nicht aber wieso extra eine Funktion zum Einbinden von JS wenn TYPO3 schon alles hat?

$GLOBALS['TSFE']->additionalHeaderData[$this->prefixId] = '<script type="text/javascript" src="dein_JS.js"></script>';

Norman

NickD ·

es ist bequemer 🙂
ich habe so eine funktion, in die ich alles reinschieße und von der ich auch was zurück bekomme :p klar kann ich auch alles direkt additionalHeaderData geben, aber ich denke das es so schöner gelößt ist. meine funktion nimmt mir so schon einiges an arbeit ab und so soll es ja auch sein 😉

NickD ·

außerdem bleibt mir der teil mit dem pfad erspart (.t3lib_extMgm::siteRelPath($this->extKey).dirname($this->scriptRelPath).$path.$file.)

Stoneage ·

Ich habe mir mal dreisterweise erlaubt die Ausgabe der Funktion ein bißchen zu formatieren und Stylesheets hinzuzufügen. Das \t rückt den Code ein, das \n macht einen Zeilenvorschub. Das geht komischerweise nur mit doppelten Anführungszeichen.

	function includeJavaScript($path,$file) {
   		return "\t<script src=\"".t3lib_extMgm::siteRelPath($this->extKey).dirname($this->scriptRelPath).$path.$file."\" type=\"text/javascript\"></script>\n";
	} 
	
	function includeStylesheet($path,$file) {
   		return "\t<link rel=\"stylesheet\" href=\"".t3lib_extMgm::siteRelPath($this->extKey).dirname($this->scriptRelPath).$path.$file."\" media=\"screen\">\n";
	}

Ich fände es auch toll, wenn Du in Zukunft solche nützlichen Codeschnippsel zur Extensionentwicklung in das Typo3 Wiki einträgst (http://wiki.typo3.org/index.php/Overview_Developer_Manuals). Ich habe dort auch schon angefangen, ein paar (hoffentlich) nützliche Codeschnippsel/Tutorials der Allgemeinheit zur Verfügung zu stellen. Ich glaube dann haben ein paar Leute mehr davon.

just2b ·
Tetramatrix schrieb

Warum hast Du nicht mein Code übernommen? Ist doch viel cooler!? 😢

warum schreibst du nicht deinen einfach dazu? it is a wiki 😉

NickD ·

hau deinen code einfach dazu, ist doch kein problem...sry das ich den ignoriert hab, war keine böse absicht 😉