Hands-On: Redakteure dürfen nur Seiten mit "Nicht im Menu" anlegen.

Bild von Tom Murphy VII, CC-BY-SA-3.0

Es gibt Kundenanforderungen, die klingen auf den ersten Blick ganz easy. Und dann lernt man doch wieder etwas über das System dazu.


Nach einer durchgeführten Redakteursschulung hat sich der Kunde überlegt, viele neue Redakteure auf sein TYPO3-System loszulassen; es sollte aber sichergestellt werden, dass die Redakteure zwar neue Seiten hinzufügen dürfen, diese sollten aber nicht in der Navigation auftauchen.

Als ich diese Anforderung auf den Schreibtisch bekam, war mein erster Gedanke: "kein Problem!" - TYPO3 bringt ja in den Seiteneigenschaften "im Menu verstecken" (hide in menu) mit. Insofern war meine Strategie, dieses Feld für die Benutzergruppe(n) per Default zu setzen und den den Benutzergruppen das Recht zu entziehen, dieses Feld schreiben zu dürfen.

Denkste!

Das wiederum war ein klassischer Fehler: wenn die Benutzergruppen kein Recht haben, das Feld zu schreiben, dürfen sie es auch beim Anlegen einer neuen Seite nicht setzen. Eigentlich logisch, aber genau konträr zu der gewünschten Funktionalität.

Des Weiteren habe ich festgestellt, dass der TypoScrip-Code zum Setzen des Feldes

TCAdefaults.pages.nav_hide = 1

als User-TS nicht funktioniert. Ich bin mir noch nicht ganz sicher, ob das Problem vor meinem Bildschirm sitzt oder ob das ein Bug in TYPO3 ist; ggf. mache ich dazu noch ein Ticket auf. 

Dann eben anders...

Als Page-TS (in den Seiteneigenschaften) funktioniert der Code allerdings sehr wohl; damit werden dann alle Seiten per Default als "Nicht im Menu" angelegt, aber nur wenn das Feld für die entsprechenden Redaktionsgruppen schreibbar ist.

Damit die Redakteure trotzdem nicht eigenmächtig das gerade mühsam gesetzte Häkchen wieder rausnehmen dürfen (und damit die Seite in der Navigation wieder sichtbar wird), habe ich ebenfalls im Page-TS der Startseite folgenden Code eingefügt:

[usergroup = 3]
TCAdefaults.pages.nav_hide = 1
TCEFORM {
   pages {          
nav_hide.disabled = 1
   }
}
[end]

Damit wird für alle Benutzer in der Gruppe mit der ID 3 (das ist in diesem Fall eine Grundkonfigurationsgruppe, in der ALLE Redakteure sind) das entsprechende Feld einfach ausgeblendet.