【问题标题】:SilverStripe move default SiteTree CMS fields to new tabSilverStripe 将默认 SiteTree CMS 字段移动到新选项卡
【发布时间】:2016-07-20 16:31:55
【问题描述】:

在默认的 SS3 设置中,CMS 字段位于标签Root.Main 中。但是,我希望创建两个新选项卡 Main ContentForm,以便默认 CMS 字段位于 Root.Main.MainContent

我查看了SiteTree.php 以了解这些字段是如何放置到选项卡中的。在这之间似乎很难走。

问:如何将默认 cms 字段从 Root.Main 移动到 Root.Main.MainContent

【问题讨论】:

    标签: silverstripe


    【解决方案1】:

    在 3.3.2 中,默认字段会自动放入名为 Main Content 的选项卡中。这个Main Content 选项卡实际上是代码中引用的Root.Main 选项卡。如果Main Content 选项卡是唯一的选项卡,那么它会被隐藏,因为只有一个选项卡并没有多大用处。

    要做你想做的事,只需创建你的字段,然后将它们添加到新的Form 选项卡:

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

    【讨论】:

      【解决方案2】:

      AlphaCactus 的答案应该是你想要的,但是如果你想创建第三级标签集,你可以使用类似的代码:

      $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')
          )
      ));
      

      【讨论】:

      • 我曾考虑在我的答案中包含这个,但是这种嵌套在视觉上变得非常复杂,所以你真的需要它。从我的测试来看,如果没有在构建时或存储对嵌套选项卡的引用,向这些选项卡添加额外的字段,会有点深:$fields->addFieldsToTab('Root.Main.MainTabset.Form', ... )。您还可以将选项卡直接添加到Root.Main,以便您可以通过Root.Main.FormTab 引用它,但它没有提供任何有用的视觉样式(至少在 3.3.2 中),而不是直接向Root.Main 选项卡添加字段,所以我不推荐它。
      • @AlphaCactus 三层标签有点失控。我不知道您可以使用 addFieldsToTab 函数中的第一个参数添加它们
      猜你喜欢
      • 1970-01-01
      • 2012-09-10
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      相关资源
      最近更新 更多