TYPO3 Kochrezepte
Mehrere Websites mit TYPO3 verwalten
Problem
Sie möchten mehrere Websites mit TYPO3 verwalten, beispielsweise um weitere Subdomains einer Website über ein Backend zu administrieren.
Lösung
Legen Sie für jede Domain einen eigenen Datensatz vom Typ Domain an und legen Sie diese in die gewünschten Seiten im Seitenbaum. Dadurch verknüpfen Sie die Adressen mit den jeweiligen Seiten, so dass diese analog dazu über den Browser aufgerufen werden können. Wechseln Sie dafür zuerst in das TYPO3-Backend und aktivieren Sie das Modul „Liste“. Klicken Sie anschließend auf die Seite, die der ersten Domain zugewiesen werden soll. Erfahrungsgemäß ist dies die Startseite Ihrer jetzigen Website. Legen Sie dort einen neuen Datensatz vom Typ Domain an. In das Feld Domain geben Sie die gewünschte Adresse ein, unter der die Seite gefunden werden soll. Achten Sie darauf, dass Sie hier die komplette Adresse (inkl. Subdomain) ohne Protokoll eingeben und sämtliche Adressen eindeutig sind. TYPO3 ergänzt mehrfach vorkommende Adressen mit einer 0.
Wählen Sie anschließend eine weitere Ursprungsseite Ihrer Website an und wiederholen Sie diesen Schritt. Dadurch ordnen Sie die andere Adresse ebenfalls einer bestimmten Seite zu. Wiederholen Sie diesen Vorgang, bis Sie sämtliche Domains in den Seitenbaum integriert haben. TYPO3 kann nun eindeutig zwischen den vorhandenen Domains unterscheiden und die Anfragen des Browsers auf den entsprechenden Teil des Seitenbaums weiterleiten.
Wenn Sie unter zwei Domains eine Website finden möchten, also sowohl unter der Adresse www.example.ne5 als auch unter der Adresse www.example.org, brauchen Sie diesen Schritt nicht durchzuführen. Dann genügt die Umleitung der Domain auf die gleiche IP-Adresse. |
Sie haben damit die Grundvoraussetzung dafür geschaffen, dass Ihre Domains nach der Umstellung der DNS-(Domain Name System)Server von TYPO3 der entsprechenden Website korrekt zugeordnet werden können. Richten Sie nun den DNS-Server so ein, dass der Hostname auf dieselbe IP-Adresse zeigt, auf der Ihre existierende TYPO3-Installation liegt. Anschließend registrieren Sie auf dem Server den neuen virtuellen Host.Dadurch wird die Domain auf das gewünschte Verzeichnis auf dem Server umleitet.
Hierzu müssen Sie Ihren Webserver entsprechend konfigurieren. Beim Apache-Webserver erfolgt diese Konfiguration normalerweise in der Datei httpd.conf. Das genaue Vorgehen weicht aber je nach Distribution bzw. Betriebssystem stark ab. Die beiden Domains werden dann in einer TYPO3-Installation verwaltet und greifen auf die Dateien einer TYPO3-Installation zu. TYPO3 analysiert beim Aufruf der Webseite den Domainnamen und liefert dann die entsprechenden Seiten für diese Domain aus.
Diskussion
Mit TYPO3 können Sie beliebig viele Domains über eine Oberfläche verwalten. Die jeweiligen Websites bleiben dabei über das durchgängige Seitenbaumprinzip stets leicht administrierbar. Wenn Sie mehrere Domains in einer TYPO3-Installation verwalten, die unterschiedliche Websites repräsentieren, sollten Sie für jede Domain einen eigenen Seitenbaum anlegen. In der Praxis hat sich dafür folgendes Prinzip bewährt: Legen Sie für jede Domain eine eigene Hauptseite an, unter der Sie die weiteren Unterseiten einfügen. Die Hauptseite verknüpfen Sie dann über den Seitentyp Shortcut mit der Unterseite. Erst diese Unterseite enthält die eigentlichen Webseiten, die über ein entsprechendes Root-Template die Seiteninhalte im Frontend darstellen. Dadurch bleibt die Seitenstruktur sauber und übersichtlich.
Wenn der Seitenbaum mit der Zeit umfangreicher wird, können Sie auch so genannte temporäre Einstiegspunkte im Seitenbaum definieren. Klicken Sie dazu auf das Seitensymbol einer solchen Hauptseite und aktivieren Sie im Kontextmenü die zweite Optionsebene über „Weitere Einstellungen“. Wählen Sie dort die Option „Als Startpunkt für den Seitenbaum festlegen“. TYPO3 zeigt danach nur den Seitenbaum dieser Seite an. Um wieder in die reguläre Ansicht zu wechseln, klicken Sie auf den Link „Temporären Einstiegspunkt“ aufheben. |
Sämtliche Verlinkungen werden weiterhin über die IDs der Seiten oder Inhaltselemente erzeugt. Auch auf gemeinsame Dateien können Sie über das Modul Dateiliste zugreifen. Jedoch sollten Sie dabei beachten, dass TYPO3 standardmäßig nicht kontrolliert, in welcher Domain diese Seite liegt. So kann es vorkommen, dass bei Verknüpfungen über mehrere Domains hinweg die Domain der aktuellen Website übernommen wird. Da die gewünschte Seite jedoch nicht in den Seiten der aktuellen Domain liegt, führt der Klick auf den Link nicht auf die korrekte Seite.
Dieses Phänomen umgehen Sie, indem Sie folgende Option in Ihrem TypoScript-Setup aktivieren:
config { typolinkCheckRootline = 1 }
Listing 1
TYPO3 kontrolliert nun für jeden internen Link die dazugehörige Domain. So stellen Sie sicher, dass TYPO3 bei jedem internen Link zusätzlich zu den Sichtbarkeitseinstellungen auch die jeweilige Domain berücksichtigt, in der die Seite liegt. Für die Umsetzung der Links wird dabei der zuerst gefundene Domain-Datensatz ausgewertet. Achten Sie darauf, wenn Sie mehrere Domain-Datensätze für einen Seitenbaum angelegt haben.
Um Verknüpfungen zu internen Seiten zu erstellen, sollten Sie weiterhin ausschließlich die IDs der Datensätze und niemals die absoluten Adressen verwenden. Nur dadurch ist sichergestellt, dass eine Verknüpfung unabhängig von der Position im Seitenbaum hergestellt werden kann. Außerdem kontrolliert TYPO3 automatisch die Sichtbarkeitseinstellungen der Zielseite, so dass die Verknüpfung beispielsweise ausgeblendet wird, wenn die Seite unsichtbar ist oder der aktuelle Benutzer nicht über die nötigen Zugriffsrechte verfügt. Vermeiden Sie unbedingt hardcodierte Verknüpfungen zu internen Seiten. Dies kann zu großen Schwierigkeiten führen, wenn die Seite verschoben oder ausgeblendet wird. |
Die Inhaltseingabe beschleunigen
Problem
Sie möchten Ihre Inhalte schneller und effizienter eingeben.
Lösung
Verwenden Sie den Bearbeitungsmodus „Schnelleingabe“ im Modul „Seite“.
Mit der Schnelleingabe steht Ihnen ein Eingabemodus zur Verfügung, mit
dem Sie Inhaltselemente schnell bearbeiten und neu erzeugen können.
Wechseln Sie also in das Modul „Seite“ und klicken Sie auf die Seite,
deren Inhalt Sie bearbeiten möchten. Der Seiteninhalt wird dann dem
aktuellen Darstellungsmodus entsprechend entweder nach Spalten,
Sprachen oder im Schnelleingabe-Modus angezeigt. Falls die
Schnelleingabemaske nicht gleich erscheint, finden Sie rechts oben ein
Auswahlfeld, mit dem Sie den Bearbeitungsmodus einstellen können.
Wählen Sie dort die Option „Schnelleingabe“. Danach ändert sich die
Eingabemaske, und Sie können über das Schnelleingabeformular Inhalte
direkt anwählen und editieren.
Unterhalb der Eingabemaske für den Datensatz werden alle anderen
Seiteninhalte aufgelistet, die sich in der Seite befinden. Der aktuelle
Datensatz wird in der Liste mit einem roten Pfeil gekennzeichnet.
Klicken Sie auf einen der Titel, öffnet sich umgehend die Eingabemaske
für das entsprechende Inhaltselement. Beachten Sie dabei, dass Ihre
Änderungen unwiderruflich verloren gehen, wenn Sie vor dem Wechsel die
Inhalte nicht abspeichern.
Innerhalb der Liste können Sie auch neue Seitenelemente hinzufügen.
Klicken Sie dazu auf den Pfeil an der gewünschten Position. Nach dem
Speichern erzeugt TYPO3 den Datensatz an der gewünschten Stelle.
Beachten Sie, dass der Bearbeitungsmodus „Schnelleingabe“ in SysOrdnern
ausgeblendet wird.
Diskussion
Um die Eingabe noch effektiver zu gestalten, können Sie in der
Schnelleingabe die Feldanordnung über das Benutzer- oder
Seiten-TSconfig anpassen. Mit dem folgenden Code verschieben Sie das
Feld Text vor das Feld Überschrift:
mod.web_layout.tt_content { fieldOrder = bodytext, header }
Listing 2
Dies ist dann hilfreich, wenn Sie bestimmte Felder hintereinander
bearbeiten möchten, etwa um Inhalte in einer festen Reihenfolge zu
kopieren. Beispielsweise können Sie damit die Tabulator-Reihenfolge so
optimieren, dass Sie mit jeweils einem Tabulator-Schritt ins nächste
Feld springen. Alle übrigen Felder werden nach den Standardangaben
angeordnet. Beachten Sie, dass die Angaben im Benutzer-TSconfig die
Angaben im Seiten-TSconfig überschreiben.
Eine vollständige Liste der möglichen Feldnamen erhalten Sie über
das Modul „Konfiguration“. Wählen Sie dort den Eintrag „$TCA (tables.php)“
in der Auswahlliste. Danach klappen Sie beim Eintrag „tt_content“ den
Wert „columns“ auf. Damit erhalten Sie eine Liste der möglichen
Feldnamen, die Sie umstellen können (in Rezept 1.4 erfahren Sie mehr
über das Modul „Konfiguration“).
Um die Inhaltseingabe zusätzlich zu beschleunigen, geben Sie folgenden Code in das Benutzer-TSconfig-Feld ein:
options.saveDocNew = 1
Listing 3
Damit erweitern Sie die Optionspalette zum Speichern um die Funktion Dokument sichern
und neues anlegen für alle Datensätze. In Abbildung 3-4 sehen Sie die Palette vor und nach
der Aktivierung dieser Funktion.
Neue Datensätze können Sie so direkt aus der aktuellen Eingabemaske
heraus anlegen. Möchten Sie diese Speicherfunktion nur auf spezielle
Tabellen anwenden, verwenden Sie folgenden Code:
options.saveDocNew = 0 options.saveDocNew.[tabellen_name] = 1
Listing 4
Die Option „Speichern und neu“ wird so nur bei der angegebenen
Tabelle sichtbar. Umgekehrt können Sie diese Option in der Form auch
für spezielle Tabellen deaktivieren:
options.saveDocNew = 1
Listing 5
Standardmäßig werden die so erzeugten Datensätze immer unterhalb
des bestehenden Datensatzes geschrieben. Möchten Sie die Datensätze
oberhalb der bestehenden anlegen, geben Sie folgenden Code ein:
options.saveDocNew = top
Listing 6
Analog zu den oben beschriebenen Einstellungen können Sie diese Option auch nur auf spezielle Tabellen anwenden:
options.saveDocNew.[tabellen_name] = top
Listing 7
Beachten Sie, dass im Seitenmodus „Schnelleingabe“ die Option „Speichern und neu“ nicht vorhanden ist. Sie können jedoch unter jedem
Element automatisch einen neuen Datensatz anlegen, wenn Sie auf einen
der grauen Pfeile zwischen den vorhandenen Seitenelementen klicken.
Daraufhin öffnet sich gleich die Eingabemaske des neuen Elements.
Indem Sie auf den Titel eines bestehenden Datensatzes klicken, öffnen Sie den entsprechenden Datensatz für die Bearbeitung.
Problem
Sie haben spezielle Anforderungen an ein Menü, die über die simple
Wiedergabe eines Seitenbaums hinausgehen. So wollen Sie zum Beispiel
eine Brotkrumen-Navigation erstellen, die dem Betrachter den kompletten
Pfad von der Root-Seite bis zur aktuellen Seite anzeigt.
Lösung
Verwenden Sie den HMENU-Parameter „special“ und dessen Wert rootline:
temp.beispielmenu = COA temp.beispielmenu { 10 = HMENU 10 { special = rootline special.range = 1|-1 1 = TMENU 1 { NO { allWrap = |<br /> } } } }
Listing 8
Beachten Sie, dass wir in diesem Beispiel TMENU als Platzhalter für
eine der möglichen Varianten TMENU, GMENU, TMENU_LAYERS, GMENU_LAYERS,
IMGMENU und JSMENU verwendet haben. Je nach Variante müssen Sie
gegebenenfalls andere Parameter setzen, um die volle Funktionalität des
Menüs zu erreichen. Lesen Sie dazu bei Bedarf die entsprechenden
Rezepte.
Diskussion
Neben den üblichen Navigationen, die im Prinzip einen kleineren oder
größeren Teilbereich eines Seitenbaums wiedergeben, kommen immer öfter
so genannte Breadcrumb-Menüs zum Einsatz. Die Bezeichnung bedeutet
übersetzt Brotkrumen-Navigation und ist eine Metapher, die dem
bekannten Märchen Hänsel und Gretel entliehen wurde. Hänsel benutzt
bekanntlich Brotkrumen, um eine Spur durch den Wald zu legen, damit die
beiden den Weg zurück wiederfinden können.
Genau darum geht es bei einer Brotkrumen-Navigation, nämlich dem
Betrachter einer Seite den Weg zurück zur Root-Seite zu zeigen. Genau
genommen handelt es sich auch hier um einen Teilbereich eines
Seitenbaums, jedoch nur um den gerade aktiven Ast, oder, um den
offiziellen TYPO3-Terminus zu benutzen, die Rootline. Der entsprechende
Typ, den Sie dem HMENU mit Hilfe von „special“ zuweisen müssen, heißt
demzufolge rootline.
Die Ausgabe eines solchen Rootline-Menüs könnte zum Beispiel so aussehen:
Sie befinden sich hier:
Ebene 1.1 > Ebene 2.1 > Ebene 3.4 > Ebene 4.2 > aktuelle Seite
Listing 9
Dabei sollten Sie den Link für die aktuelle Seite auf jeden Fall
abschalten, um Verwirrung beim Betrachter zu vermeiden. Alle anderen
Seiten sollten prinzipiell verlinkt sein, damit der Betrachter
jederzeit ohne großen Aufwand zu einer beliebigen Stelle der Rootline
zurückgelangen kann. Dies ist der Code für das eben gezeigte Beispiel:
temp.beispielmenu = COA temp.beispielmenu { 10 = HMENU 10 { special=rootline special.range = 1|-1 1 = TMENU 1 { NO { doNotLinkIt = |*| 0 |*| 1 allWrap = |*| | > |*| | } } } }
Listing 10