Переопределить представление настройки 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>
По крайней мере, вам не нужно менять источники в саду.