Silverstripe - 在配置中打开或关闭模块

时间:2017-10-20 09:09:48

标签: yaml silverstripe

是否可以根据config.yml或_config.php中的条目激活或停用模块?

假设我已经构建了一个图像库模块,但不希望它在网站上显示,是否可以在配置文件中取消激活?

2 个答案:

答案 0 :(得分:4)

仅当模块提供了执行此操作的功能时。

您可以添加自己的private static $enable_module = true

class MyClass extends Object
{
    private static $enable_module = true;

    public function doMyThing()
    {
        if (!Config::inst()->forClass('MyClass')->enable_module) {
            return false;
        }

        // do stuff here
    }
}

然后您可以通过YML

禁用它
MyClass:
  enable_module: false

会禁用它。

对于模板,您可以添加

public function getGalleryEnabled() {
    return Config::inst()->forClass('MyClass')->enable_module;
}

到您的Page_Controller课程然后

<% if $GalleryEnabled %><% include MyGallery %><% end_if %>

最佳做法是:永远不会在现场网站上发展

答案 1 :(得分:3)

SilverStripe扫描webroot中的所有目录以查找模块。如果您将一个名为manifest_exclude的文件放在任何目录中,它就不会被扫描而不会被包含在内;自动加载器无法找到它,如果不手动包含文件,则无法调用您的类。