[TYPO3-german] Seite mit PHP, HTML, JS einbinden

bernd wilke t3ng at pi-phi.tk
Sat Oct 12 12:26:34 CEST 2013


Am Sat, 12 Oct 2013 01:28:13 +0200 schrieb csvirtual:


> Einziges Problem ist, dass der JS-Code nicht ausgeführt wird. Dieser
> steht im Body des HTML-Teils und ist nicht mit $content .= '...'
> eingrahmt (hatte ich auch mal versucht). Die Einbindung der JS-Libraries
> erfolgt im head-Teil (eingerahmt).
> 
> So schauts aus:
> 
> <?php function user_datenziehen($content= ' '){
> :
> :
> $content .='<html>';
> $content .='<head>';
> $content .='<script type="text/javascript"
> src="fileadmin/jscript/jquery-1.10.2.min.js"></script>';
> $content .='<link rel="stylesheet" type="text/css"
> href="fileadmin/design.css">';
> $content .='</head>';
> $content .='<body>';
> :
> :
> ?>
> 
> <script type="text/javascript">
> 	JS-Code hier
> </script>
> 
> <?php $content .='</body>';
> $content .='</html>';
> return $content;
> }
> ?>
> 
> 
> Ein letzter Hinweis zum JS-Code wäre super.

hier versuchst du mitten im Content nochmal ein HTML- und ein HEAD-Tag 
einzufügen????

alles was dein Code zurück liefert wird in den Marker geschrieben, der 
mitten im BODY steht. das kann natürlich nicht funktionieren.

um aus einer TYPO3 Extension (Plugin!) heraus Javascript einzubinden gibt 
es drei Möglichkeiten. 

Wenn du expliziten Javascript-code einbinden willst kann man das wie 
folgt machen:
$GLOBALS['TSFE']->setJS($this->extKey,'alert("das ist js");');
oder auch:
$jsCode = "...here comes your JS code...";
$GLOBALS['TSFE']->additionalHeaderData[$this->extKey] = t3lib_div::wrapJS
($jsCode);
so etwas braucht man wenn man z.b. im Javascript explizite Werte setzen 
will.

Das Einbinden einer externen Javascript-Datei geht ähnlich der zweiten 
Variante:
$GLOBALS['TSFE']->additionalHeaderData[$this->extKey] = 
 '<script type="text/javascript" language="JavaScript" '.
 'src="'. $pathAndNameOfJavascript.'"></script>';

Damit wird TYPO3 gesagt, dass bei der Generierung des Seitenheaders 
dieses Javascript mit eingebunden werden soll, was eine ganz andere 
Stelle ist als der Return-Wert deiner Funktion erscheint.


Unabhängig davon:
technisch machbar, aber äußerst unsauber, besteht schon die Möglichkeit 
javascript auch im BODY zu definieren, bzw. zu includieren. Natürlich nur 
mit einfachen SCRIPT-Tags und nicht mit HEAD oder gar HTML.

bernd
-- 
http://www.pi-phi.de/cheatsheet.html


More information about the TYPO3-german mailing list