【问题标题】:Reorder/Move Silverstripe 3 CMS tabs on inherited objects重新排序/移动继承对象上的 Silverstripe 3 CMS 选项卡
【发布时间】:2017-05-28 20:17:41
【问题描述】:

到处寻找这个问题的答案,但似乎没有其他人拥有它或真正担心它。问题来了:

  • A 类有一个 getCMSFields() 方法,该方法添加了一个名为“Root.SEO”的选项卡,其中包含一些字段。
  • B 类继承自 A 类,并拥有自己的 getCMSFields() 方法,该方法首先调用 $fields = parent::getCMSFields() 并将更多字段/选项卡添加到 $fields。
  • SEO 选项卡始终位于 B 类中设置的任何内容之前,因为 A 类首先执行。但我希望它位于 B 类定义的两个选项卡之间

我尝试了 $fields->removeByName('SEO') 并且他们手动在 B 类中重新添加了选项卡。这很好,但我似乎无法在删除它之前找到一种方法来获取 SEO 选项卡的内容。所以我能做的最好的就是正确定位一个没有 A 类字段的空 SEO 选项卡。

【问题讨论】:

    标签: php silverstripe


    【解决方案1】:

    一种方法是删除SEO 选项卡并在添加我们的其他字段和选项卡后重新添加:

    public function getCMSFields() {
        $fields = parent::getCMSFields();
    
        // Add fields here
    
        if ($seoTab = $fields->fieldByName('Root.SEO')) {
            $fields->removeFieldFromTab('Root', 'SEO');
            $fields->fieldByName('Root')->push($seoTab);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 2018-08-23
      • 2010-11-08
      相关资源
      最近更新 更多