TYPO3 CMS

Upgrade auf TYPO3 6.2

caticonslite_bm_alt

Für ein erfolgreiches Upgrade auf TYPO3 6.2 gibt es aufgrund der individuellen Seitenkonfigurationen kein Patentrezept, dieser Beitrag soll einen Leitfaden der in jedem Fall erforderlichen bzw. sinnvollen Schritte darstellen. Upgrades auf TYPO3 6.2 sind ausgehend von TYPO3 4.5 oder höher möglich.

0. Überprüfen der Systemvoraussetzungen:
Bevor mit dem Upgrade begonnen wird, sollten die Systemvoraussetzungen (insb. PHP- und MySQL-Versionen) überprüft und ggf. angepasst werden. Die Systemvoraussetzungen sind auf der TYPO3 Download-Seite ersichtlich. Auf größeren Installationen müssen ggf. die PHP-Umgebungsvariablen „memory_limit“ und „max_execution_time“ während des Vorgangs angepasst werden.

1. Backup von Datenbank und Dateien anlegen:
Vor dem Upgrade sollten unbedingt Datenbank und Dateien der bestehenden Installation gesichert werden. Wenn SSH-Zugriff besteht bietet es sich an „mysqldump“ und „tar“ zum Erstellen der Backups zu verwenden:

mysqldump -uUsername -p -hHostname Database > public_html/typo3conf/ext/dump.sql
tar cJf backup.tar.xz public_html

Alternativ kann das Backup auch mit FTP-Zugriff und z.B. phpMyAdmin erstellt werden.

2. Kopie der Installation für das Upgrade anlegen:
Das Upgrade der Installation wird idealerweise auf einer Arbeitskopie der bestehenden Installation durchgeführt und wird mit dem in Schritt 1 erstellten Backup erzeugt. Damit wird zugleich sichergestellt, dass das Backup funktioniert und im Fehlerfall eine Wiederherstellung damit möglich ist:

tar xJf backup.tar.xz public_html
mysql -uDevUsername -p -hDevHostname DevDatabase < public_html/typo3conf/ext/dump.sql

Abschließend müssen noch die Verbindungsdaten der Datenbank in „public_html/typo3conf/localconf.php“ angepasst werden.

3. Update des TYPO3 Core:
Als erster Schritt im Upgrade-Prozess erfolgt die Aktualisierung des TYPO3 Core auf die aktuellste Patch-Version. Ist beispielsweise TYPO3 4.7.17 installiert, erfolgt die Aktualisierung auf TYPO3 4.7.19. Dies ist mit dem Ersetzen des „typo3_src“-Verzeichnisses erledigt.

4. Aufräumen der Installation:
Zuerst werden alle nicht mehr benötigten Extensions im „Extension Manager“ deinstalliert und endgültig vom System gelöscht. Anschließend führt man im „Database Analyser“ des „Install Tool“ mit „COMPARE“ ein Update der Tabellen durch. Als nächstes erfolgt die Aktualisierung des „Reference Index“ (Extension „lowlevel“ muss hierfür installiert sein) im Modul „Admin tools > DB check“ bzw. über die Konsole (Hinweise siehe „Admin tools > DB check“). Abschließend können optional noch alle Tabellen mit temporären Daten (Cache-Tabellen, Logs, etc.) geleert werden.

5. Update bzw. Upgrade der Extensions:
Als nächstes werden die verbleibenden Extensions auf die letzte mit dem aktuell installierten TYPO3 Core kompatible Version aktualisiert (zuvor „Retrieve / Update“ des Extension Repository durchführen und Aktualisierungshinweise in der Dokumentation der Extensions berücksichtigen!). Sind Extensions in einer Version mit TYPO3 < 6.2 und in der nächsten mit TYPO3 > 6.2 kompatibel (d.h. es gibt keine Version die mit beiden TYPO3 Core-Versionen kompatibel ist), werden diese deinstalliert (allerdings nicht gelöscht) und erst nach dem Upgrade des TYPO3 Core wieder installiert.

6. Smoothmigration:
Als nächstes im „Extension Manager“ die Extension „smoothmigration“ installieren, die Anforderungen bzgl. Extbase und Fluid können ignoriert werden und nach der Installation „Clear all caches“ ausführen. Anschließend im Modul „Admin tools > Smooth Migration“ „Run all checks“ ausführen und abschließend alle in „Show report“ dargestellten Mängel beheben.

7. Upgrade des TYPO3 Core:
Nun wird der TYPO3 Core auf 6.2 aktualisiert und das nicht mehr in Verwendung befindliche Verzeichnis „t3lib“ gelöscht. Im folgenden Beispiel ist „typo3_src“ als Git-Submodule eingebunden:

cd public_html/typo3_src/
git fetch
git checkout tags/TYPO3_6-2-4
cd ..
git rm t3lib
git add typo3_src
git commit -m "[TASK] upgrade of TYPO3 core to v6.2.4"

8. Datenbank aktualisieren, Caches leeren und „Upgrade Wizard“ ausführen:
Achtung: In diesem Schritt dürfen keine Tabellen oder Spalten gelöscht werden, da sonst Daten der in Schritt 5 vorübergehend deaktivierten Extensions verloren gehen würden!
Um die Datenbank zu aktualisieren wird das „Install Tool“ direkt und nicht über das Backend aufgerufen (z.B. „http://webentwickler.at/typo3/install/“). Zuerst werden unter „Folder structure“ u.a. fehlende Order mit „Try to fix file and folder permissions“ angelegt. Anschließend wird unter „Important actions“ „Compare current database with specification“ aufgerufen und ausschließlich die vorselektierten Aktionen ausgeführt. Danach unter „Important actions“ „Clear all cache“ ausführen, daraufhin im „Upgrade Wizard“ alle Schritte einzeln durchführen. Abschließend erneut „Clear all cache“ unter „Important actions“ ausführen.

9. Reaktivierung der Extensions:
Zurück im Backend wird im „Extension Manager“ „Get extensions“ aufgerufen, um die neuesten Informationen des TER zu laden. Danach werden mit TYPO3 6.2 kompatible Updates der in Schritt 5 deaktivierten Extensions über „Get extensions“ installiert (Aktualisierungshinweise in der Dokumentation der Extensions berücksichtigen!).

Damit sollte das Upgrade abgeschlossen sein.

Installation von TYPO3 6.2 mit Git

caticonslite_bm_alt

Die Verwendung von Git als Versionverwaltung für TYPO3 (Version Control System – VCS) ist unbedingt zu empfehlen, schließlich ergeben sich u.a. folgende Vorteile daraus:

  • Der eigene Code ist versioniert, d.h. sollte es zu Problemen kommen, kann die funktionierende Version einfach wiederhergestellt werden.
  • Der TYPO3 Core wird als Git-Submodule eingebunden, somit ist das Einspielen von Core-Patches (z.B. nach Sicherheitslücken) binnen Sekunden erledigt.

Die Installation von TYPO3 mit Git hat sich im Vergleich zu den Vorgängerversionen seit Version TYPO3 6.2 sehr vereinfacht:

1. Initialisieren eines leeren Git-Repositories im Webverzeichnis (z.B. „public_html/“):

git init

2. TYPO3-Core („typo3_src“) als Git-Submodule einbinden und in das Verzeichnis wechseln:

git submodule add git://git.typo3.org/Packages/TYPO3.CMS.git typo3_src
cd typo3_src/

3. Anzeigen der verfügbaren Tags (TYPO3 Core-Versionen):

git tag

4. Checkout des TYPO3 Core in der gewünschten Version (in diesem Fall 6.2.4):

git checkout tags/TYPO3_6-2-4

5. Wechsel zurück in das Webverzeichnis und anlegen der erforderlichen Symlinks:

cd ..
ln -s typo3_src/index.php
ln -s typo3_src/typo3

6. Kopieren der .htaccess-Datei für URL-Rewriting, etc.:

cp typo3_src/_.htaccess .htaccess

7. Ausschließlich „Programmcode“ soll im Git-Repository versioniert werden, daher werden „Benutzerdaten“ (z.B. hochgeladene Bilder, Dokumente) und weitere für die Versionierung nicht relevante Dateien/Ordner ausgenommen:

echo "# User
/fileadmin/
/uploads/
# Deprecation-Log
/typo3conf/deprecation*
# Enable Install Tool
/typo3conf/ENABLE_INSTALL_TOOL
# SQL
/typo3conf/*.sql
/typo3conf/*.sql.gz
# Temp
/typo3conf/temp_*
/typo3temp/
# IDE & OS
/.DS_Store
/.idea/
/nbproject/
*.swp
" > .gitignore

8. Initial commit im CommitMessage-Format für TYPO3:

git add .
git commit -a -m "[TASK] initial commit"

Die Verzeichnisse „fileadmin“, „uploads“,… und deren Unterverzeichnisse werden während der Installation automatisch angelegt, mit der nun im Browser begonnen werden kann.

Frontend Page Rendering Template anpassen

caticonslite_bm_alt

In TYPO3 lässt sich so gut wie alles konfigurieren, auch das Page Rendering Template lässt sich anpassen. Dieses Template legt die HTML-Struktur der Seite fest, d.h. an welche Position Titel, JavaScript, CSS, etc. eingefügt werden. Der Template-Pfad lässt sich im TypoScript-Setup mit der Anweisung „config.pageRendererTemplateFile“ setzen, das Standard-Template ist unter „typo3/sysext/cms/tslib/templates/tslib_page_frontend.html“ zu finden.

Möchte man beispielsweise nur Conditional Comments einfügen, um den Browser zu identifizieren und CSS-Hacks zu vermeiden  (siehe Blog-Eintrag von Paul Irish), so kann man entweder Hooks im PageRenderer (typo3/sysext/core/Classes/Page/PageRenderer.php) oder auf die TypoScript-Konfigurationsoptionen im PageGenerator (typo3/sysext/frontend/Classes/Page/PageGenerator.php) zurückgreifen. Um den HTML-Tag zu erweitern lässt sich beispielsweise „config.htmlTag_stdWrap“ verwenden.

Mehrsprachigkeit in TYPO3 konfigurieren

caticonslite_bm_alt

Um Mehrsprachigkeit in TYPO3 zu aktivieren sind mehrere Schritte erforderlich. Der hier dargestellte Weg zeigt eine mögliche Variante auf, besonders hinsichtlich RealURL sind viele unterschiedliche Konfigurationen möglich.

1. Sprache im Backend aktivieren:

Im Modul „Web > Liste“ (engl. „Web > List“) wählt man die Rootseite mit der ID „0“ (Seite mit vorangestelltem TYPO3-Symbol) aus. Nun fügt man einen neuen Datensatz vom Typ „Alternative Seitensprache“ (engl. „Website language“) ein und füllt die erforderlichen Felder aus. Die hier festgelegten Werte haben keinerlei Relevanz für die weitere Konfiguration, sondern dienen nur der Unterscheidung für Benutzer. Nach dem Speichern sucht man sich die Objekt-ID(s) im Modul „Web > Liste“ der angelegten Sprachen heraus, z.B. indem man mit der Maus auf die gewünschte Flagge zeigt. Die Standardsprache ist nicht anzulegen und hat implizit die ID 0 – in diesem Fall ist dies „Deutsch“. Als alternative Sprachen wurden „English“ mit der ID 1 und Italiano mit der ID 2 angelegt.

2. TypoScript-Setup:

config {
	linkVars = L(0-2)
	uniqueLinkVars = 1
	defaultGetVars.L = 0
	language = de
	locale_all = de_AT.UTF-8
	sys_language_uid = 0
	htmlTag_langKey = de
}
[globalVar = GP:L = 1]
	config {
		language = en
		locale_all = en_GB.UTF-8
		sys_language_uid = 1
		htmlTag_langKey = en
	}
[globalVar = GP:L = 2]
	config {
		language = it
		locale_all = it_IT.UTF-8
		sys_language_uid = 2
		htmlTag_langKey = it
	}
[global]

Die Einstellung „linkVars“ legt hier fest, dass der Parameter „L“ im Wertebereich 0-2 bei der Erzeugung von Links immer berücksichtigt wird. Hat man mehr oder weniger Sprachen, muss der Wertebereich entsprechend angepasst werden. Damit Parameter in der URL nur ein Mal vorkommen, wird „uniqueLinkVars“ aktiviert, andernfalls könnten URLs im Format „?L=0&L=2“ erzeugt werden.

Die Zahlen in den Bedingungen/Conditions (z.B.: „[globalVar = GP:L = 1]“) und für den Parameter „sys_language_uid“ (z.B.: „sys_language_uid = 1“) entsprechen den IDs der im ersten Schritt angelegten Sprachen.

Der Parameter „locale_all“ muss an die installierten Systemsprachen angepasst werden und ist erforderlich um beispielsweise das Datum in der korrekten Sprache auszugeben.

3. RealURL: (Die Konfiguration ist hier nur auszugsweise dargestellt):

// [...]
'preVars' => array(
	// [...]
	'GETvar' => 'L',
	'valueMap' => array(
		'de' => 0,
		'en' => 1,
		'it' => 2,
	),
	'noMatch' => 'bypass',
	// [...]
),
// [...]

Damit die 404-Fehlerbehandlung auch auf der ersten Ebene korrekt funktioniert, muss für alle „preVars“ die Option „’noMatch‘ => ‚bypass'“ aktiviert und es darf „postVarSet_failureMode“ nicht gesetzt sein.

4. Sprachkürzel in der URL:

Die gezeigte Konfiguration würde für die Default-Sprache Links im Format „domain.tld/seite/“ generieren, Links für zusätzliche Sprachen im Format „domain.tld/sprache/seite/“ (z.B.: „domain.tld/en/page/“). Möchte man auch bei der Standardsprache das Kürzel in der URL haben, muss man mit dem TypoScript-Setup „config.defaultGetVars.L = 0“ den Standardwert setzen. Würde man in der RealURL-Konfiguration anstelle für „’noMatch‘ => ‚bypass'“ die Option „‚valueDefault‘ => ‚de'“ setzen, würde man zwar das selbe URL-Format erreichen, allerdings würde die 404-Fehlerbehandlung auf der ersten Ebene nicht mehr funktionieren.

Eingebette Objekte (object, embed, iframe) im RTE von TYPO3

caticonslite_bm_alt

Standardmäßig ist es im Rich Text Editor (RTE) von TYPO3 nicht möglich eingebettete Objekte (z.B. Flickr-Stream, Vimeo– oder YouTube-Video) einzufügen. Abhängig von der Quelle erfolgt die Einbindung entweder mit den HTML-Tags object, param und embed, oder als iframe. Die folgende Konfiguration des RTE ist grundsätzlich über sämtliche Plug-ins hinweg gültig und funktioniert somit auch im RTE von tt_news, tx_news, usw.

Zuerst müssen die erforderlichen HTML-Tags zu den erlaubten Tags hinzugefügt werden – hierfür ergänzt man die RTE-Konfiguration im PageTS wie folgt:

RTE.default.proc {
	allowTags := addToList(object,param,embed,iframe)
	allowTagsOutside := addToList(object,embed,iframe)
	entryHTMLparser_db.allowTags < .allowTags
}

Tags die bei „allowTagsOutside“ angegeben werden, können auch außerhalb eines Block-Elements wie „p“ oder „div“ eingefügt werden.

Anschließend muss noch die Parser-Funktion des RTE im TypoScript-Setup angepasst werden:

lib.parseFunc_RTE.allowTags := addToList(object,param,embed,iframe)
1 2 3 4 5  nach oben