如何通过编程方式禁用Orchard模块?

6

在Migrations.cs中,如果一个模块已经启用,我想要禁用它,如果另一个模块尚未启用,则启用它。我该如何做到这一点?

2个回答

8

好的,我查看了Orchard.Modules中的Controller和Command类,找到了解决方法。首先我需要在项目中添加对Orchard.Modules的引用,然后在Migrations.cs文件中进行以下操作:

    public int UpdateFrom2() {
        var features = _moduleService.GetAvailableFeatures().ToDictionary(m=>m.Descriptor.Id, m=>m);
        if (features.ContainsKey("TinyMce") && features["TinyMce"].IsEnabled) {
            _moduleService.DisableFeatures(new string[] { "TinyMce" });
        }

        if (features.ContainsKey("TinyMceDeluxe") && !features["TinyMceDeluxe"].IsEnabled) {
            _moduleService.EnableFeatures(new string[] { "TinyMceDeluxe" });
        }

        return 3; 
    }

你好,想问一下你是如何解决迁移中的_moduleService问题的? - user3495888
1
似乎在Orchard 1.9中无法正常工作。当我尝试启用“Orchard.Taxonomies”时,它会在数据库中进入“Rising”状态,从此该功能将无法启用,也无法在管理界面中再次启用。我需要重新启动Web服务器才能使模块状态变为“Up”。很奇怪。 - ViRuSTriNiTy

1
我认为你应该看一下Orchard工具:你可以启用和禁用功能,并获取已启用功能的列表。请查看Orchard.Modules项目中的FeatureCommands.cs文件。希望这能帮到你。

谢谢,那正是我最终所做的。 - Giscard Biamby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接