Переопределить представление настройки Orchard в Orchard CMS

Мне нужно расширить SetupViewModel из модуля Orchard.Setup, чтобы добавить некоторые параметры, характерные для моего веб-приложения, чтобы они отображались на экране настройки "Добро пожаловать в Orchard" вместе со стандартным именем администратора и так далее. Я создал свой собственный модуль с SetupController и моделью расширенного представления, но Orchard по-прежнему использует стандартный модуль Orchard.Setup. То, что я пробовал до сих пор, но не повезло: 1. OrchardSuppressDependency на контроллере в моем пользовательском модуле 2. Маршрут с приоритетом 101 в моем пользовательском модуле Я обнаружил, что вы можете легко использовать собственный модуль для установки, если вы измените имя ShallFeature в Метод ShellContextFactory CreateSetupContext:

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>(),
        };
    }

Но кажется, что я не могу переопределить IShellContextFactory даже с OrchardSuppressDependency, по крайней мере, в целях установки.

Любая идея о том, как я могу достичь желаемого результата без изменения кода CMS?

Версия для сада - 1.8.1.

1 ответ

Решение

Так что это не совсем то, чего я пытался достичь, но это нечто. Чтобы переопределить IShellContextFactory, которая используется во время процесса установки Orachard, вы можете использовать файл Host.config. Пример:

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

По крайней мере, вам не нужно менять источники в саду.

Другие вопросы по тегам