代码生成模板

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."
)]