2017-04-10 4 views
1

Ich muss SetupViewModel von Orchard.Setup-Modul erweitern, um einige Optionen für meine Webanwendung hinzuzufügen, so dass sie auf Setup-Bildschirm "Willkommen in Orchard" neben dem Standard-Admin-Benutzernamen angezeigt werden und so weiter. Ich habe mein eigenes Modul mit SetupController und erweitertes Ansichtsmodell erstellt, aber Orchard verwendet weiterhin das standardmäßige Orchard.Setup-Modul. Was ich bisher versucht habe, aber kein Glück: 1. OrchardSuppressDependency auf Controller in meinem benutzerdefinierten Modul 2. Route mit der Priorität 101 in meinem benutzerdefinierten Modul Ich habe herausgefunden, dass Sie problemlos eigene Modul für Setup verwenden können, wenn Sie ändern ShallFeature Name in ShellContextFactory CreateSetupContext Methode:Override Orchard Setup-Ansicht in Orchard CMS

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

Aber es scheint, dass ich nicht außer Kraft setzen IShellContextFactory kann sogar mit OrchardSuppressDependency zumindest für Setup-Zwecke.

Irgendeine Idee, wie ich das gewünschte Ergebnis erreichen kann, ohne den CMS-Code zu ändern?

Orchard-Version ist 1.8.1.

Antwort

0

Also, es ist nicht ganz das, was ich versuchte zu erreichen, aber es ist etwas. Um IShellContextFactory zu überschreiben, das während des Setup-Prozesses von Orachard verwendet wird, können Sie die Datei Host.config verwenden. Beispiel:

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

Mindestens Sie müssen nicht Orchard Quellen ändern.