Day: October 25, 2012

CoSchni#6: TYPOScript Menü mit PHP Datei rendern

Manchmal reicht TYPOScript oder die eigenen Fähigkeit bzw. Kenntnisse von TYPOScript nicht aus um gewünschte Kundenanforderungen zu erfüllen. Nachhelfen kann man in diesem Fall mit PHP Code. So gut wieder jederzeit und überall ist es im TYPOScript möglich über preUserFunc und postUserFunc die Eingabe bzw. Ausgabe, vor und nach dem TYPOScript zu beeinflussen:

[PHP]
// Einbinden der PHP-Datei
includeLibs.xyzFunc= fileadmin/scripts/code.php

tmp.menu.5 = HMENU
tmp.menu.5 {
entryLevel = 1
1 = TMENU
1 {
stdWrap.postUserFunc = user_menueFunc->listMenue
noBlur = 1
wrap = |
NO = 1
NO {
stdWrap.htmlSpecialChars = 1
ATagBeforeWrap = 1
stdWrap.dataWrap = {field:title}
stdWrap.dataWrap.import.listNum = 0
allWrap =

|


}
SPC = 1
SPC.allWrap =


}
}

tmp.menu.5.1.stdWrap.postUserFunc.firstPage = 9
tmp.menu.5.1.stdWrap.postUserFunc.divisor = 9

[/PHP]

Die entsprechende PHP-Datei sieht das bspw. so aus:

[PHP]
class user_menueFunc{

function listMenue($content,$conf)
{

// Zugriff auf im TYPOScript definierte Variablen
$amount = (int)$content – (int)$conf[‘firstPage’];
$pages = ceil($amount / (int)$conf[‘divisor’]);

// Zugriff auf interne Variablen
$pid = $GLOBALS[‘TSFE’]->id;

// Zugriff auf Get-Variablen
$offset = (int)t3lib_div::_GET(‘offset’);

// Zugriff auf den erzeugten Code
$menueelemente = explode(““, $content);

// Rückgabe von Code
return $content;
}

}
[/PHP]

CoSchni#5: Seiteninhalt ohne Head ausgeben für Ajax Requests

Angenommen man hat eine Seite mit dynamischem Inhaltsbereich, der zum Zeitpunkt, wenn die Seite geladen wird, noch nicht feststeht, bzw. man diesen aus Performance-Gründen nicht gleich mitladen will. Der Inhalt soll erst beim Klicken auf “Weiter” oder scrollen dynamisch in den bereits angezeigten Inhalt geladen werden. Der nachgeladene Inhalt, bzw. das HTML braucht somit bspw. keine head-Angabe, weil die bereits vorhanden ist. Um dies zu erreichen, muss ein neuer Seitentyp definiert werden, bei dem alle weiteren “Ausgaben” unterdrückt werden:

[PHP]
dynCall = PAGE
dynCall {
typeNum = 999
10 < dyn.Content config { disableAllHeaderCode = 1 xhtml_cleaning = 0 admPanel = 0 debug = 0 no_cache = 1 } } [/PHP] Aufrufen kann man später den Inhalt wie folgt: [PHP] http://www.example.com/index.php?id=123&type=999 [/PHP]

CoSchni#4: SourceOptimization (sourceopt)

Die TYPO3 CMS Extension SourceOptimization soll dafür sorgen, das der gesamte HTML minified augegeben wird. Auf Wunsch werden alle HTML-Leerzeichen und Kommentare entfernt, außer der TYPO3 CMS Hinweis im Header. Damit die Extension sourceopt den HTML-Code minifiziert, ist folgende Zeile in den Constants notwendig:

[PHP]
// TYPOScript Constants
sourceopt.formatHtml = 1
[/PHP]

Ist nur ein Zeile und sieht auch logisch aus, da es ansonsten aber keinen Hinweis gibt, habe ich etwas gebraucht bis ich dies gefunden hatte.

[random_content group_id=”211″ num_posts=”1″]