2016-07-20 4 views
0

In einem Standard-SS3-Setup werden die CMS-Felder in Registerkarte Root.Main platziert. Ich möchte jedoch zwei neue Registerkarten erstellen Main Content und Form, so dass die CMS-Standardfelder in Root.Main.MainContent sein werden.SilverStripe verschiebt Standard SiteTree CMS-Felder auf neue Registerkarte

Ich schaute auf SiteTree.php, um zu sehen, wie die Felder in der Registerkarte platziert werden. Es scheint ziemlich schwierig zu sein, dazwischen zu kommen.

Q: Wie Standard-CMS-Felder von Root.Main in Root.Main.MainContent verschieben?

Antwort

3

In 3.3.2 werden die Standardfelder automatisch in eine Registerkarte namens Main Content platziert. Diese Main Content Registerkarte ist eigentlich die Root.Main Registerkarte im Code referenziert. Wenn die Registerkarte Main Content die einzige Registerkarte ist, wird sie ausgeblendet, da es nicht viel nutzt, nur eine Registerkarte zu haben.

Sie tun, was Sie einfach Ihre Felder anlegen wollen und sie dann auf die neue Form Registerkarte hinzufügen:

$myNewField = new LiteralField("Lipsum","Ipsum dolor sit amet enim."); 
$fields->addFieldToTab('Root.Form', $myNewField); 
+0

Sie haben Recht, es funktioniert. – Faloude

2

AlphaCactus' Antwort sollte sein, was Sie wollen, aber wenn Sie eine dritte Ebene tabset erstellen möchten , können Sie Code ähnlich wie verwenden:

$fields->addFieldsToTab('Root.Main', Tabset::create('MainTabset', 
    Tab::create('MainContent', 
     TextField::create('Field1'), 
     TextField::create('Field2') 
    ), 
    Tab::create('Form', 
     TextField::create('Field3'), 
     TextField::create('Field4') 
    ) 
)); 
+1

Ich hatte darüber nachgedacht, dies in meine Antwort aufzunehmen, aber diese Art von Verschachtelung wird visuell sehr kompliziert, so dass Sie es wirklich wollen. Wenn ich bei meinen Tests zusätzliche Felder zu diesen Registern hinzufüge, wenn sie nicht zur Konstruktionszeit oder mit gespeicherten Referenzen auf verschachtelte Tabs gemacht werden, bekomme ich ein bisschen tief: '$ fields-> addFieldsToTab ('Root.Main.MainTabset.Form', ...) '. Sie können auch einen Tab direkt zu 'Root.Main' hinzufügen, so dass Sie ihn mit' Root.Main.FormTab' referenzieren können, aber er bietet kein nützliches visuelles Styling (zumindest in 3.3.2) über das direkte Hinzufügen von Feldern die Registerkarte "Root.Main", also empfehle ich es nicht. – AlphaCactus

+0

@AlphaCactus Drei Ebenen von Tabs bekommen ein bisschen außer Kontrolle. Mir war nicht bewusst, dass Sie sie einfach mit dem ersten Parameter in der addFieldsToTab-Funktion hinzufügen konnten –

Verwandte Themen