Oct 22

Bei der Erstellung eines Login- bzw. Logout-Links muss man darauf achten, dass dieser nicht im Cache gespeichert werden darf. Würde das Objekt im Cache landen, dann würde bei jedem Besucher der Link/Text angezeigt werden, der beim ersten Aufruf der Seite im Cache gelandet ist. Würde man den Benutzernamen ausgeben, könnte auf jeder Seite ein anderer Benutzername ausgegeben werden und dieser würde nicht mit dem eigenen übereinstimmen. Deshalb muss man anstelle des “normalen” “COA” (Content Object Array) auf die ungecachte Variante “COA_INT” zurückgreifen. Die Grundstruktur des TypoScript sieht wie folgt aus:

[usergroup = *]
	temp.login = COA_INT
	temp.login {
		10 = TEXT
		10 {
			value = Abmelden
			lang.en = Logout
			typolink {
				parameter = 1
				additionalParams = &logintype=logout
			}
		}
	}
[else]
	temp.login = COA_INT
	temp.login {
		10 = TEXT
		10 {
			value = Anmelden
			lang.en = Login
			typolink {
				parameter = 2
			}
		}
	}
[global]

Angepasst werden müssen lediglich die Werte für “typolink.parameter”. Möchte man z.B. beim Abmelden den Benutzer auf der selben Seite belassen und nicht (in diesem Beispiel auf die Seite mit der ID 1) umleiten, so schreibt man anstelle von “parameter = 1″ “parameter.data = TSFE:id”.

Oct 03

Nachdem nun bekannt ist, wie man “TypoScript in externe Datei auslagern” kann, möchte man im verwendeten Editor selbstverständlich auch Syntaxhervorhebung (Syntax highlighting) und Syntaxvervollständigung (Syntax/Code completion) nutzen. Für den für die Webentwicklung besonders beliebten Editor “Coda” gibt es ein kostenloses Plugin namens “ts4c” (TypoScript for Coda). Die Installation gestaltet sich Dank des Installationspakets sehr einfach und ist bereits nach wenigen Sekunden beendet und Coda für die Zusammenarbeit mit TypoScript bereit.

Oct 02

Üblicherweise werden Templates (“Constants” und “Setup”) mit TypoScript direkt im Backend von TYPO3 geschrieben. Das hat allerdings den Nachteil, dass diese während der Entwicklung nur schwer in Versionsverwaltungen (z.B. SVN oder GIT) zu bringen sind und somit eine Versionierung nur über die History-Funktion von TYPO3 gegeben ist. Allerdings kann man in Templates auch externe Dateien laden:

<INCLUDE_TYPOSCRIPT:source="file:fileadmin/templates/ts/main.ts">

D.h. es ist nur notwendig diese eine Zeile in das Template von TYPO3 einzufügen, damit der TypoScript-Code in einer externen Datei (in diesem Fall unter “fileadmin/templates/ts/main.ts”) gewartet werden kann.

Während der Entwicklung sollte man die Extension abz_developer installieren, da andernfalls externe Dateien immer im Cache zwischengespeichert werden (auch wenn “config.no_cache = 1″ gesetzt wurde) und somit dieser, nach jeder Änderung in der externen Datei, geleert werden müsste. Wenn die Entwicklung fertiggestellt wurde und die Seite in den Live-Betrieb geht, sollte das Plugin aus Performance-Gründen unbedingt wieder deaktiviert werden. Selbstverständlich kann nicht nur das “Setup” des Templates ausgelagert werden, sondern auch die “Constants” auf die selbe Art und Weise.

Alternativ ist es auch möglich im TSconfig-Feld des Benutzers unter “Admin tools > User Admin” die folgende Zeile zusätzlich zu “config.no_cache = 1″ im Template einzufügen, damit externe Dateien immer geladen und nicht im Cache zwischengespeichert werden:

admPanel.override.tsdebug.forceTemplateParsing = 1
Jul 31

Normalerweise ist in TYPO3 der Doctype XHTML xhtml_trans voreingestellt. Allerdings ist es auch schon passiert, dass kein Doctype mehr angezeigt wurde und deshalb sollte immer ein Doctype explizit in TypoScript gesetzt werden.

Um den gewünschten Doctype in TYPO3 zu konfigurieren muss man in TypoScript eine der folgenden Option für config.doctype festlegen:

  • none (Kein Doctype – notwendig wenn die Seite in eine andere serverseitig eingebunden wird)
  • xhtml_trans
  • xhtml_strict
  • xhtml_frames (für öffentliche Webseiten aus SEO-Gründen nicht zu empfehlen)
  • xhtml_11
  • xhtml_20

Zu Problemen kommt es allerdings im Internet Explorer mit dem einleitenden XML-Prolog, da dieser in den Quirks-Modus schaltet und das Box-Modell falsch interpretiert. Deshalb sollte mit der Option config.xmlprologue = none der XML-Prolog für den Internet Explorer ausgeschaltet werden.

Eine vollständige und saubere Doctype-Konfiguration sieht deshalb wie folgt aus:

config {
	doctype = xhtml_trans
	xhtml_cleaning = all
}
[browser = msie]
config.xmlprologue = none
[global]