Typo3 - Statische Seiten erstellen
Viele stehen oft vor dem Problem, statische Seite mit Typo3 zu generieren. Um direkt ein paar Mißverständnisse (besonders bei neuen Anwendern) aus dem Weg zu räumen:
Statische Seiten werden physisch als .html-Seiten auf dem Server geschrieben.
Dazu sind im Vorfeld einige Schritte notwendig, damit dieser Prozess ermöglicht wird. Unter anderem muss die Funktion "simulateStaticDocuments" eingeschaltet sein.
1. Bereiten wir den Webserver vor
Der Apache ist am weitesten verbreitet, daher bezieht sich alles darauf.
- Öffne die httpd.conf im Verzeichnis /apache/conf/ mit einem Texteditor
- Suche den Abschnitt "Dynamic Shared Objects (DSO)"
- Suche die Zeile "# LoadModule rewrite_module modules/mod_rewrite.so"
- Entferne das "#"
- Suche die Zeile "# AddModule mod_rewrite.c"
- Entferne das "#"
- Suche den Abschnitt "<Directory "I:/Apache/htdocs">"
- Suche die Zeile "AllowOverride None"
- Ändere die Zeile in "AllowOverride All"
Was bewirkt das?
Die ReWrite Engine des Apache wird aktiviert. Diese steuern wir später über eine .htaccess an. Damit der Apache diese Dateien überhaupt ausliest und entsprechend ausführt, muss "AllowOverride" auf "All" stehen. Bei "None" werden die Dateien komplett ignoriert. Dies muss man nicht unbedingt für das komplette Verzeichnis machen, man kann auch spezifisch eines angeben oder über virtuelle Hosts den Eintrag vornehmen.
Der Webserver muss neu gestartet werden (Dienst/Prozess), damit die Änderungen aktiv sind.
2. Erstellen der .htaccess
Die Datei findest Du im Root Deines Typo3-Verzeichnisses. Benenne sie in ".htaccess" um (den _ entfernen).
- Öffne die Datei in einem Texteditor
- Ersetze den Inhalt komplett mit folgendem:
RewriteEngine On
RewriteBase /typo3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^typo3$ typo3/index_re.php
RewriteRule ^([0-9]+)[.]([0-9]+).html$ index.php?id=$1&type=$2
Was passiert da?
Einschalten der Engine, Basisverzeichnis in dem sich Typo3 befindet, exkludieren des Typo3-Verzeichnisses und die eigentliche Umwandlungsfunktion.
Diese löst die von Typo3 simulierten statischen Dateinamen (22.0.html) in die funktionierende Form auf (index.php?id=22). Der zweite Parameter ist für Frames interessant. Wenn Du den Alias der Seite verwenden möchtest (oder dies zusätzlich zum kryptischen Namen ergänzen willst), musst Du den regulären Ausdruck ändern. Hilfe dazu findest Du z.b. bei www.php.net.
3. Typo3 einstellen
Die Vorarbeit ist geleistet. Jetzt schalten wir die Funktion in Typo3 ein.
- Öffne die Datei "localconf.php" im Verzeichnis "/typo3conf" mit einem Texteditor
- Füge folgende Zeilen hinzu:
$TYPO3_CONF_VARS["FE"]["simulateStaticDocuments"] = "1";
$TYPO3_CONF_VARS["FE"]["publish_dir"] = './publish/';
Das kannst Du auch im Install-Tool unter "All configuration" vornehmen. Die entsprechenden Felder sind im letzten Drittel der Seite.
4. Abschließende Arbeit
Geh nun ins Root des Verzeichnisses und erstelle dort ein Unterverzeichnis "publish". In dieses werden die statischen Seiten dann geschrieben.
Generieren der statischen Seiten:
- Schalte das Admin-Panel für das Frontend ein, in dem Du im Template der Seite unter "Setup" folgende Zeile hinzu fügst:
page.config.admPanel=1
"page" musst Du ggf. durch Deine Variable ersetzen (ich verwende immer "seite") 😉
Das Admin-Panel erscheint dann auf der Webseite, sobald Du Dich im Backend angemeldet hast. Klicke jetzt auf das "+" und anschließend auf "Veröffentlichen". Abschließend auf die Schaltfläche "Jetzt veröffentlichen".
Die statische Seite findest Du jetzt im Verzeichnis "publish".
Hinweis:
Das Publizieren mehrerer Seiten auf einmal funktioniert bei mir nicht korrekt (+1 Ebene ja, +2 Ebenen nein). Probier es selber mal aus. Meistens kommt folgende Fehlermeldung:
Cannot instantiate non-existent class: tx_indexedsearch_indexer in i:apachehtdocs 3t 3libclass.t3lib_div.php on line 1826
Ich hoffe, diese kleine Einführung hilft einigen Leuten weiter. Wenn Du Vorschläge zur Verbesserung oder Kritik hast, lass es mich wissen.
Jörg