1. 程式人生 > 其它 >程式碼生成模板

程式碼生成模板

程式碼生成模板

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