| Weitere Artikel aus dem Webentwickler Blog |
| Teilen |
In diesem Beitrag geht es um die Workspaces im Backend von TYPO3. Im Backend muss für praktisch jeden Datensatz eine Overlay-Variante erzeugt werden, damit der User auch wirklich seinen Workspace so sieht, wie er nach der Veröffentlichung aussieht. Dazu gehört auch die Korrektur der Pid-Werte für Offline- und Online-Daten.
Für das Backend gibt es deutlich mehr API-Funktionen, weil hier auch Aktionen wie das Veröffentlichen von Datensätzen erfolgen. Wenn ein Modul Ihrer Extension nicht in allen Workspaces zugänglich sein soll, können Sie diese in der Datei conf.php mit einem Eintrag der Form $MCONF['workspaces'] = online,offline,custom einstellen. Auf Ebene des Funktionsmenüs lässt sich dies durch einen zusätzlichen Parameter für die Funktion t3lib_extMgm::insertModuleFunction() einstellen. Die Eigenschaft $GLOBALS['BE_USER']->workspace enthält den aktuellen Workspace des Backend-Users. Handelt es sich um einen Custom Workspace, so finden sich die weiteren Daten in $GLOBALS['BE_USER']->workspaceRec. Die Werte für die einzelnen Arbeitsumgebungen sind:- 0 = online (Live)
- -1 = offline (Entwurf)
- > 0 = custom (Projekt)
- -99 = kein Workspace gewählt. Das ist ein Fehlerzustand!
Im Normalfall kann auch ein Admin-User von einem Offline-Workspace aus keinen Live-Datensatz speichern. In manchen Fällen ist das aber unumgänglich, beispielsweise wenn ein User sein eigenes Profil ändert, das nur im Live-Workspace existiert. Für Ihre Extension können Sie ein solches Verhalten über die Eigenschaft t3lib_tcemain::bypassWorkspaceRestrictions=true erlauben.
Verschieben von Inhalten in Arbeitsumgebungen
Seit TYPO3 4.2 ist in Workspace-Umgebungen das Verschieben von Inhalten auf Element-Ebene (anstatt auf Seiten- oder Zweig-Ebene) möglich und auch die empfohlene Methode. Das bedeutet in der Praxis, dass beispielsweise im Live-Workspace ein Seiteninhalt auf der Homepage erscheint, während in der Draft-Version der Inhalt auf eine Unterseite verschoben wurde.
Dies wird durch sogenannte Platzhalter ermöglicht. Auf der neuen Seite wird ein Datensatz mit t3ver_state=3 angelegt, sowie einem Feld t3ver_move_id, das die uid des Datensatzes enthält, der beim Veröffentlichen hier eingesetzt werden soll. Um die Funktion des Veröffentlichungssystems zu gewährleisten, wird außerdem auf der Quellseite eine neue Version des Datensatzes mit t3ver_state=4 (move-to pointer) erzeugt. Dies ist der Eintrag, der später tatsächlich verschoben wird.
Die im TYPO3 4.2 enthaltenen Versionen von t3lib_page::versionOL() und t3lib_BEfunc::workspaceOL() unterstützen dieses System, sodass auch in einer solchen Konstellation die Preview-Funktion des Frontends korrekt funktioniert.
Dieser Text ist dem Buch “Extensions für TYPO3” von Robert Steindl entnommen, das im Franzis-Verlag erschienen ist. Das Buch ist hier direkt bestellbar.



































