代码生成模板
Orchard Core 模板通过命令行使用 dotnet new 模板配置创建新的站点、主题、模块。关于 dotnet new 的更多信息可以查看 https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-new。
安装Orchard CMS templates
一旦安装了.NET Core SDK,输入下面的命令安装模板用于创建Orchard Core 网站应用程序:
dotnet new -i OrchardCore.ProjectTemplates::1.0.0
这个命令会使用发布版的健壮的Orchard Core。如果想使用最新的开发版的分支,可以使用下面的命令:
dotnet new -i OrchardCore.ProjectTemplates::1.0.0-* --nuget-source https://nuget.cloudsmith.io/orchardcore/preview/v3/index.json
创建新网站
通过命令行
创建一个Orchard Cms网站程序
dotnet new occms
这个命令将使用默认选项。
您可以将以下CLI参数传递给安装选项:
Orchard Core Cms Web App (C#) Author: Orchard Project Options: -lo|--logger Configures the logger component. nlog - Configures NLog as the logger component. serilog - Configures Serilog as the logger component. none - Do not use a logger. Default: nlog -ov|--orchard-version Specifies which version of Orchard Core packages to use. string - Optional Default: 1.0.0
通过下面的命令可以忽略日志
dotnet new occms --logger none
创建一个ASP.NET MVC Core 网站程序
dotnet new ocmvc
通过Visual Studio创建程序
启动Visual Studio,创建一个解决方案(.sln),新增一个 ASP.NET Core Web Application:
现在我们新增一个网站程序,我们需要增加适当的依赖,这样可以将新的web程序作为OrchardCore程序。
最后,我们需要在Startup.cs 文件中注册Orchard CMS 服务:
using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace MyNewWebsite { public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddOrchardCms(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseStaticFiles(); app.UseOrchardCore(); } } }
创建一个新的CMS模块
通过命令行创建新模块
dotnet new ocmodulecms
上面的命令使用默认的选项。
你可以使用下面的参数
Orchard Core Module (C#) Author: Orchard Project Options: -A|--AddPart Add dependency injection for part in Startup.cs. If PartName is not provided, default name will be used bool - Optional Default: false / (*) true -P|--PartName Add all files required for a part string - Optional Default: MyTest -ov|--orchard-version Specifies which version of Orchard Core packages to use. string - Optional Default: 1.0.0
例如:
dotnet new ocmodulecms -n ModuleName.OrchardCore dotnet new ocmodulecms -n ModuleName.OrchardCore --AddPart true dotnet new ocmodulecms -n ModuleName.OrchardCore --AddPart true --PartName Test
提示:部件将自动附加到提供的部件名称的末尾。
Visual Studio创建新模块
启动Visual Studio, 打开解决方案Orchard Core, 选择 OrchardCore.Modules 文件夹,右键,选择新增一个项目 "新增 → 项目" and 创建一个.NET 标准类库:
为了将这个类库标识为Orchard Module, 我们现在需要引用 OrchardCore.Module.Targets NuGet包。
每个*.Targets NuGet包都用于将类库标记为特定的Orchard Core功能。
OrchardCore.Module.Targets是我们目前感兴趣的。
我们将通过添加OrchardCore.module.Targets作为依赖项,将新类库标记为模块。
为此,您需要右键单击MyModule.OrchardCore项目并选择“管理NuGet软件包”选项。
要在Nuget Package Manager中查找包,您需要选中“include prerelease”,并确保您拥有我们先前添加的Orchard Core资源。
找到后,单击右侧面板上版本:最新预发行版x.x.x.x旁边的安装按钮。
Orchard Core现在需要Manifest.cs文件来标识此模块。下面是该文件的一个示例:
using OrchardCore.Modules.Manifest; [assembly: Module( Name = "TemplateModule.OrchardCore", Author = "The Orchard Team", Website = "http://orchardproject.net", Version = "0.0.1", Description = "Template module." )]
要启动此模块,我们现在需要将Startup.cs文件添加到新模块中。以该文件为例:
using System; using Fluid; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; #if (AddPart) using OrchardCore.ContentManagement; using OrchardCore.ContentManagement.Display.ContentDisplay; using OrchardCore.ContentManagement.Handlers; using OrchardCore.ContentTypes.Editors; using OrchardCore.Data.Migration; using OrchardCore.Templates.Cms.Module.Drivers; using OrchardCore.Templates.Cms.Module.Handlers; using OrchardCore.Templates.Cms.Module.Models; using OrchardCore.Templates.Cms.Module.Settings; using OrchardCore.Templates.Cms.Module.ViewModels; #endif using OrchardCore.Modules; namespace OrchardCore.Templates.Cms.Module { public class Startup : StartupBase { public override void ConfigureServices(IServiceCollection services) { #if (AddPart) services.Configure<TemplateOptions>(o => { o.MemberAccessStrategy.Register<MyTestPartViewModel>(); }); services.AddContentPart<MyTestPart>() .UseDisplayDriver<MyTestPartDisplayDriver>() .AddHandler<MyTestPartHandler>(); services.AddScoped<IContentTypePartDefinitionDisplayDriver, MyTestPartSettingsDisplayDriver>(); services.AddScoped<IDataMigration, Migrations>(); #endif } public override void Configure(IApplicationBuilder builder, IEndpointRouteBuilder routes, IServiceProvider serviceProvider) { routes.MapAreaControllerRoute( name: "Home", areaName: "OrchardCore.Templates.Cms.Module", pattern: "Home/Index", defaults: new { controller = "Home", action = "Index" } ); } } }
最后一步是将我们的新模块添加到OrchardCore.Cms.Web项目中,作为将其作为网站模块一部分的参考。在此之后,您应该已经准备好开始构建自定义模块。您可以参考我们的模板模块,以了解通常基本需要的示例。
创建一个主题
通过命令行
dotnet new octheme -n "ThemeName.OrchardCore"
程序应与模块相同,但我们需要引用OrchardCore.Theme.Targets,Manifest.cs文件略有不同:
using OrchardCore.DisplayManagement.Manifest; [assembly: Theme( Name = "TemplateTheme.OrchardCore", Author = "The Orchard Team", Website = "https://orchardproject.net", Version = "0.0.1", Description = "The TemplateTheme." )]