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

Silverstripe - Turn modules on or off in config

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

假设我已经构建了一个图片库模块,但还不想在网站上显示它,是否可以在配置文件中将其停用?

仅当模块提供了这样做的功能时。

您可以添加自己的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 class 然后

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

最佳做法是:永远不要在现场开发

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