SilverStripe 博客 GridfieldConfig Lumberjack 排序

SilverStripe Blog GridfieldConfig Lumberjack Sort

博客要求的 SSTR 3.1.16、博客 2.3.0 和 lumberjack -> ~1.1

我不知道应该如何更改 Lumberjack 生成的博客模块中的 GridfieldConfig。

此处生成: https://github.com/silverstripe/silverstripe-blog/blob/master/code/model/Blog.php#L528

并覆盖此处设置的内容: https://github.com/silverstripe/silverstripe-lumberjack/blob/1.1/code/extensions/Lumberjack.php#L131

因为我不知道如何在不破解的情况下进行修改,所以我尝试了这样的 Injector:

<?php

class BlogInj extends Blog {
    public function getLumberjackGridFieldConfig() {
        $ljgfc = GridFieldConfig_Lumberjack::create();
        // $ljgfc->addComponent(new GridFieldOrderableRows('Sort'));
        // $ljgfc->getComponentByType("GridFieldPaginator")->setItemsPerPage(100);
        return $ljgfc;
    }
}

config.yml                            
Injector:
  Blog:
    class: BlogInj

这显示了设置了选项的 GF(上面已注释掉),但是一旦 BlogInj 博客上存在 getLumberjackGridFieldConfig 函数,就会在保存时抛出错误,例如: .../framework/core/Object.php 的第 763 行出错 https://github.com/silverstripe/silverstripe-framework/blob/3.1/core/Object.php#L763

首先我应该如何修改 Lumberjacks GF-Config?或者 Injector 真的是我应该使用的吗?如果是这样,我做错了什么?

作为 Blog just returns a GridFieldConfig_BlogPost 对象,您可以尝试将其子类化。

class GridFieldConfig_MyBlogPost extends GridFieldConfig_BlogPost
{
    public function __construct($itemsPerPage = null)
    {
        parent::__construct($itemsPerPage);

        // do what you want...
    }
}

在你的 config.yml

Injector:
  GridFieldConfig_BlogPost:
    class: GridFieldConfig_MyBlogPost