2016-07-20 11 views
0

デフォルトのSS3セットアップでは、CMSフィールドはタブRoot.Mainに配置されます。ただし、デフォルトのCMSフィールドがRoot.Main.MainContentになるように、2つの新しいタブMain ContentFormを作成したいと思います。SilverStripeデフォルトのSiteTree CMSフィールドを新しいタブに移動

フィールドにタブがどのように配置されているかを確認するには、SiteTree.phpを見ました。間に入るのはかなり難しいようです。

Q:デフォルトのCMSフィールドをRoot.MainからRoot.Main.MainContentに移動するにはどうすればよいですか?

答えて

3

3.3.2では、デフォルトフィールドは自動的にMain Contentという名前のタブに配置されます。このMain Contentタブは実際にはコードで参照されているRoot.Mainタブです。 Main Contentのタブが唯一のタブの場合は、1つのタブしか持たないためあまり使われていないため隠されています。

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

正しく動作します。 – Faloude

2

AlphaCactus'答えは、あなたが望むものでなければなりませんが、あなたは第3レベルのタブセットを作成する場合:あなたは、単にあなたのフィールドを作成し、新しいFormタブに追加したい何を行うには

次のようなコードを使用できます。

$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

私はこれを私の答えに含めようと考えていましたが、そのようなネスティングは実際には視覚的に複雑になりました。私のテストから、これらのタブにフィールドを追加するには、構築時に、またはネストされたタブへの参照が格納されていなければ、ちょっと深いことがあります: '$ fields-> addFieldsToTab( 'Root.Main.MainTabset.Form'、... ) '。また、 'Root.Main'にタブを直接追加することもできますので、' Root.Main.FormTab'で参照することができますが、(3.3.2では少なくとも)便利なビジュアルスタイリングは提供しません。 'Root.Main'タブは推奨しません。 – AlphaCactus

+0

@AlphaCactusタブの3つのレベルが制御できなくなります。私はあなたがaddFieldsToTab関数の最初のパラメータを使ってそれらを追加することができることに気づいていませんでした –

関連する問題