TYPO3-BE: Inhaltselemente für Spalten beschränken
Werden umfangreichere Website mit TYPO3 gebaut, kommen meist die Spalten (colPos) mit ins Spiel. Damit kommt dann auch das mulmige Gefühl, ob denn alle Redakteure in den jeweiligen Spalten nur die „passenden“ Inhaltselemente platzieren… Eine Gallery in der Marginalspalte? Ein Mailformular unter der Seitennavigation???
Zum Glück gibt es auch hierfür Möglichkeiten. Seit TYPO3 4.3 können im pageTS Conditions verwendet werden.
Nachfolgend eine Beispielkonfiguration, wie in der rechten Spalte nur noch das Inhaltelement „Sitemap“ (CType: menu) platziert werden kann. Dies geschiet zum einen, indem der Wizrad entsprechend angepasst wird, zum anderen, indem die Auswahl für colPos variiert wird.
## alle Spalten außer normal verbieten
TCEFORM.tt_content.colPos.removeItems = 1,2,3
##
## Rechte Spalte einschränken - Start ---------------------------------
##
[globalVar = GP:defVals|tt_content|colPos==2]
TCEFORM.tt_content.CType.removeItems := addToList(header,text,textpic,image,bullets,table,uploads,mailform,search,login,multimedia,media,splash,shortcut,list,script,div,html)
TCEFORM.tt_content.colPos.removeItems := addToList(0)
TCEFORM.tt_content.colPos.removeItems := removeFromList(2)
[global]
## new Element Wizard
[globalVar = GP:colPos==2]
mod.wizards.newContentElement.wizardItems.common.show =
mod.wizards.newContentElement.wizardItems.special.show := removeFromList(multimedia,uploads,media,html,div)
mod.wizards.newContentElement.wizardItems.forms.show =
mod.wizards.newContentElement.wizardItems.plugins.show =
[global]
##
## Rechte Spalte einschränken - Ende ----------------------------------
##
Eine Hintertür gibt es leider noch: Werden Inhaltselemente aus anderen Spalten kopiert/verschoben, scheitert die Einschränkung.
Hat hier jemand eine Lösung?
Kennt jemand einen geschickteren/besseren Weg für die gezielte Steuerung der Verwendung von Inhaltselement-Typen?
Danke für den nützlichen Post.
Und @Urs für das aktuelle Update.
… und zum Beschränken je nach backend_layout:
[globalVar = GP:colPos==0]&&[page|backend_layout = 0]
So geht’s gut:
# Reset all tabs in new content element wizard
mod.wizards.newContentElement.wizardItems.common.show =
mod.wizards.newContentElement.wizardItems.special.show =
mod.wizards.newContentElement.wizardItems.forms.show =
mod.wizards.newContentElement.wizardItems.plugins.show =
mod.wizards.newContentElement.wizardItems.mask.show =
[globalVar = GP:colPos==0]
mod.wizards.newContentElement.wizardItems.common.show := addToList(header)
mod.wizards.newContentElement.wizardItems.mask.show := addToList(mask_customelement)
[end]
für TemplaVoila! gibt es die Extension fcecolumn – blendet zwar nur Elemente im Wizard aus aber immerhin.
Hallo,
funktioniert das auch mit TemplaVoila?
Bei mir greifen die Conditions nämlich tatsächlich nicht.
Markus
Hallo Julian,
ich hatte Deine Antwort nicht mitbekommen. Wenn man auf Rootebene mittels
mod.SHARED.colPos_list=0
Spalten ausblendet, ging Deine Condition auf den Unterseiten schief. Aber hundertprozentig kann ich das nun nicht mehr nachhalten…
Jochen
@Julian
stimmt – die Condition greift. Aber es kommt zu Unregelmäßigkeiten, wenn auf root-Ebene zuvor Spalten ausgeblendet werden.
Kannst Du das konkretisieren, sodass es reproduzierbar wird? Wie blendest Du die Spalten auf root-Ebene aus?
Würde dem Ganzen dann mal nachgehen wollen, da das dann evtl. ein Bug sein könnte…
@Urs:
Seit TYPO3 4.5 sollte das Gewünschte möglich sein:
A new condition is available for the current page record in PageTS. This allows settings for example like this:
mod.SHARED.colPos_list = 0
[page|backend_layout = 1]
mod.SHARED.colPos_list = 1,0
[global]
(http://wiki.typo3.org/TYPO3_4.5)
@Jochen:
Habe die beiden Conditions eben in einem TYPO3 4.5.5 ausprobiert – und sie greifen.
Bitte beachte, dass Du _beide_ Conditions brauchst. Die eine greift _nur_ im New Element Wizard, die andere _nur_ in der Eingabemaske des neuen Contentelements.
Leider scheint die Condition
[globalVar = GP:defVals|tt_content|colPos==2]
in TYPO3 4.5.5 nicht zu greifen – hat da jemand schon etwas anderes herausgefunden?
Weiss jemand, wie man diese Lösung mit der Funktion „Backend Layout“ (ab Typo3 4.5) verbindet?
Ich möchte erst aufgrund eines bestimmten Backend Layouts diese Limitierungen vornehmen, nicht zum voraus.
Es ginge sicher auch, indem man sicherstellt, dass jede Spalte nur eine Funktion hat (BE Layout kann dieselbe Spaltennummer in verschiedenen Kontexten wiederverwenden).
Aber fast logischer schiene mir die Abfrage per Condition: Wenn BE Layout 1, dann…. beschränke dieses und dieses CE auf den und den Typ, wenn BE Layout 2, darf es anders sein…
Würde mich auch interessieren!