在Orchard CMS中覆盖Orchard Setup视图

时间:2017-04-10 07:03:03

标签: asp.net-mvc orchardcms orchardcms-1.8

我需要从Orchard.Setup模块扩展SetupViewModel,以添加一些特定于我的Web应用程序的选项,以便它们显示在“Welcome to Orchard”设置屏幕上,同时显示标准管理员用户名等。 我用SetupController和扩展视图模型创建了自己的模块,但Orchard仍然使用标准的Orchard.Setup模块。 到目前为止我尝试过但没有运气: 1.我的自定义模块中的OrchardSuppressDependency on Controller 2.在我的自定义模块中使用优先级101进行路由 我发现如果在ShellContextFactory CreateSetupContext方法中更改ShallFeature名称,则可以轻松地使用自己的模块进行安装:

public ShellContext CreateSetupContext(ShellSettings settings) {
        Logger.Debug("No shell settings available. Creating shell context for setup");

        var descriptor = new ShellDescriptor {
            SerialNumber = -1,
            Features = new[] {
                new ShellFeature { Name = "YOUR_MODULE_NAME" },
                new ShellFeature { Name = "Shapes" },
                new ShellFeature { Name = "Orchard.jQuery" },
            },
        };

        var blueprint = _compositionStrategy.Compose(settings, descriptor);
        var shellScope = _shellContainerFactory.CreateContainer(settings, blueprint);

        return new ShellContext {
            Settings = settings,
            Descriptor = descriptor,
            Blueprint = blueprint,
            LifetimeScope = shellScope,
            Shell = shellScope.Resolve<IOrchardShell>(),
        };
    }

但似乎我甚至不能使用OrchardSuppressDependency覆盖IShellContextFactory,至少是出于安装目的。

如何在不更改CMS代码的情况下实现所需结果?

Orchard版本是1.8.1。

1 个答案:

答案 0 :(得分:0)

所以,这并不完全是我想要实现的目标,但它是一种东西。要覆盖在Orachard安装过程中使用的IShellContextFactory,可以使用Host.config文件。 例如:

   <autofac>
        <components>
            <component instance-scope="single-instance" type="YourModuleNamespace.ShellBuilders.CustomContextFactory, YourModuleName" service="Orchard.Environment.ShellBuilders.IShellContextFactory, Orchard.Framework" />
        </components>
   </autofac>

至少你不需要改变Orchard来源。