Category: TYPO3

TYPO3 ist ein kostenlos erhältliches Open Source Content Management System, zugeschnitten auf die Bedürfnisse von Unternehmen für das Internet, Intranet und Extranet. TYPO3 bietet Funktionen und Module sowie eine Erweiterungsschnittstelle für ein Maximum an Einsatzmöglichkeiten.

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″]

CoSchni#3: htaccess Minified Version für TYPO3 CMS Projekte

Standardmäßig ist die htaccess von TYPO3 mit vielen Kommentaren versehen in denen weitere Optionen erklärt werden. Wer dies nicht braucht und zudem die seit der TYPO3 CMS Version 4.7 Komprimierung nutzen möchte, für den sind die unten stehenden Zeilen vollkommen ausreichend.

[PHP]
// File: typo3conf/localconf.php

$TYPO3_CONF_VARS[‘BE’][‘compressionLevel’] = ‘5’;
$TYPO3_CONF_VARS[‘FE’][‘compressionLevel’] = ‘5’;
[/PHP]

[PHP]

AddType “text/javascript” .gzip


AddType “text/css” .gzip

AddEncoding gzip .gzip

RewriteEngine On
RewriteRule ^typo3$ – [L]
RewriteRule ^typo3/.*$ – [L]
RewriteRule ^uploads/.*$ – [L]
RewriteRule ^fileadmin/.*$ – [L]
RewriteRule ^typo3conf/.*$ – [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* /index.php
[/PHP]

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

CoSchni#2: htaccess Expire Header für Caching von Dateien

Der untere Code eingefügt in die htaccess sorgt zum einen dafür das gepackte JavaScript (JS) Dateien vom Browser entsprechend erkannt werden. Der zweite Absatz ist verantwortlich dafür dem Browser mitzuteilen, wie entsprechende Datei-Endungen im Browser gecached werden sollen. Überprüft können die Einstellungen bspw. mit dem Chrome im Tab “Network”.

[PHP]

AddType “text/javascript” .gzip


AddType “text/css” .gzip

AddEncoding gzip .gzip



ExpiresActive on
ExpiresDefault “access plus 7 days”
Header append Cache-Control “public”

FileETag MTime Size


SetOutputFilter DEFLATE


[/PHP]