TYPO3 CMS

Statische Dateien von cookie-free Domain bzw. externem Server oder CDN laden

caticonslite_bm_alt

TYPO3 setzt standardmäßig das Cookie „fe_typo_user“ für Frontend-Benutzer, selbst wenn es sich nur um einen Gast handelt und somit kein Login erfolgt ist. Das hat zur Folge, dass für jede statische Datei (z.B. CSS, Bilder und JavaScript) die Cookie-Informationen über den langsamen Upload an den Server übertragen werden müssen. Indem man diese Dateien von einer cookie-free Domain holt, lässt sich etwas Ladezeit einsparen. Außerdem kann man statische Dateien von einemleichtgewichtigeren Webserver (z.B. nginx, Squid, lighttpd) oder CDN (Content Distribution Network) ausliefern lassen und somit den Hauptwebserver von TYPO3 (z.B. Apache, nginx) entlasten.

Für die Umsetzung dieses Vorhabens findet man im TER einige Erweiterungen, welche alle nach dem selben Prinzip funktionieren: Ersetzen der lokalen/relativen Pfade von fileadmin, typo3temp und uploads mittels regulärem Ausdruck. Ich setze hier bewusst nicht auf ein ausschließlich für diesen Zweck zugeschnittenes Plugin, sondern auf die „regex“-Extension, mit der ich bei Bedarf auch noch andere Ersetzungen vornehmen kann.

Nach der üblichen Vorgehensweise zur Installation des Plugins, muss im TypoScript-Setup noch folgende Konfiguration vorgenommen werden:

config.regex {
	pattern1 = /"fileadmin\/([^"]+)"/
	pattern1.replacement = "http://static.webentwickler.at/fileadmin/$1"
 
	pattern2 = /"typo3temp\/([^"]+)"/
	pattern2.replacement = "http://static.webentwickler.at/typo3temp/$1"
 
	pattern3 = /"uploads\/([^"]+)"/
	pattern3.replacement = "http://static.webentwickler.at/uploads/$1"
 
	pattern4 = /"typo3conf\/([^"]+)"/
	pattern4.replacement = "http://static.webentwickler.at/typo3conf/$1"
}

Die Zusatzdomain „static.webentwickler.at“ muss natürlich noch eingerichtet werden und auf das selbe Verzeichnis wie die TYPO3-Hauptdomain „www.webentwickler.at“ verweisen. Setzt man einen leichtgewichtigen Webserver bzw. ein CDN für die Zusatzdomain ein, so muss auf diesem natürlich dasTYPO3-Verzeichnis eingebunden werden (z.B. mittels NFS-Share oder DRBD). In diesem Fall sollte darauf geachtet werden, dass keine PHP-Dateien Plaintext ausgeliefert werden.

„csc-default“-Wrap entfernen

caticonslite_bm_alt

TYPO3 wrapt standardmäßig alle Inhaltselemente mit einem div, die Ausgabe im Frontend sieht in etwa wie folgt aus:

<div id="c1" class="csc-default">
	<p class="bodytext">
		Lorem ipsum dolor sit amet.
	</p>
</div>

Interessant ist die eindeutige ID (aufgebaut aus der Datenbank-UID mit einem vorangestellten „c“) ausschließlich im Zusammenhang mit der Verwendung von Sprungmarken bzw. wenn man Rahmen (Frames) verwendet bzw. benutzerdefinierte Rahmen definiert. Entfernen lässt sich der div-Wrapper mit folgendem TypoScript-Setup:

tt_content.stdWrap.innerWrap >

Als Ergebnis erhält man:

<p class="bodytext">
	Lorem ipsum dolor sit amet.
</p>

Extbase-Bug „#1205414233: No suitable request handler found.“ beheben

caticonslite_bm_alt

Ist auf einer Unterseite die Option „Clear“ im Template für „Setup“ und „Contants“ aktiv, so erhält man folgenden Fehler im Frontend:

#1205414233: No suitable request handler found.

Dabei handelt es sich um einen Extbase-Bug, welchen man mit folgendem TypoScript-Setup„beheben“ kann:

config.tx_extbase {
	objects {
		Tx_Extbase_Persistence_Storage_BackendInterface {
			className = Tx_Extbase_Persistence_Storage_Typo3DbBackend
		}
	}
	mvc {
		requestHandlers {
			Tx_Extbase_MVC_Web_FrontendRequestHandler = Tx_Extbase_MVC_Web_FrontendRequestHandler
			Tx_Extbase_MVC_Web_BackendRequestHandler = Tx_Extbase_MVC_Web_BackendRequestHandler
		}
	}
}

Meta-Tags Keywords und Description setzen

caticonslite_bm_alt

In den Seiteneigenschaften können u.a. die Meta-Informationen Keywords und Description jeder einzelnen Seite festgelegt werden. Wurden für eine Seite keine Meta-Informationen hinterlegt, werden diese mit folgendem TypoScript-Setup von der Seite mit der ID 1 (i.d.R. der Startseite) eingefügt:

page.meta.keywords {
	cObject = RECORDS
	cObject {
		tables = pages
		source = 1
		dontCheckPid = 1
		conf.pages = TEXT
		conf.pages.field = keywords
	}
 
	override.field = keywords
}
 
page.meta.description {
	cObject = RECORDS
	cObject {
		tables = pages
		source = 1
		dontCheckPid = 1
		conf.pages = TEXT
		conf.pages.field = description
	}
 
	override.field = description
}

Multi-Domain-Installation oder Typolink mit mehreren Domains

caticonslite_bm_alt

Werden in einer TYPO3-Installation mehrere Seitenbäume mit unterschiedlichen Domains oder Subdomains betrieben, so ist standardmäßig eine domainübergreifende Verlinkung nicht möglich. Mit folgendem TypoScript-Setup werden Typolinks mit dem in der Rootline hinterlegten Domainrecord generiert:

config {
	typolinkCheckRootline = 1
	typolinkEnableLinksAcrossDomains = 1
}
1 3 4 5 6  nach oben