1. 程式人生 > >發布基於Orchard Core的官網

發布基於Orchard Core的官網

resources space struct 包管理 內置 框架 lib 最大 identity

2018.9.25 日深圳市友浩達科技有限公司發布基於Orchard Core開發的官網 http://www.weyhd.com/。 本篇文章為你介紹如何基於Orchard Core開發一個公司網站。Orchard Core是一個免費和開源的社區交流項目,致力於在ASP.NET Core平臺開發應用程序和可重用性組件。它將創建用於ASP.Net Core應用和擴展的共享組件,以及修改這些組件以便使其應用於終端用戶,腳本人員和開發者。如果您現在是.NET Core 跨平臺的愛好者,想找一個基於ASP.NET Core開發的開源框架,Orchard Core是一個很不錯的選擇,Orchard Core是一個基於ASP.NET Core構建的可擴展與模塊化設計的開源CMS系統,全部代碼在GitHub上已開源,其中使用了很多框架和最佳實戰,它的架構設計值學習 。

官方文檔介紹:http://orchardcore.readthedocs.io/en/latest/

GitHub: https://github.com/OrchardCMS/OrchardCore

Orchard Core是全新一代的ASP.NET Core CMS。支持模塊化和多租戶。整個Orchard Core就是通過一個個模塊Module組成的,整個網站由主題和業務模塊組成。基於Orchard Core開發網站主要分為2項任務:開發自定義主題和自定義模塊。具體到友浩達的官方網站來說,我們需要自定義主題和自定義 微信公眾號和新聞管理模塊。

首先需要安裝.NET Core SDK開發包,推薦微軟最新的穩定的.NET CORE 2.1 版本。同時推薦安裝Visual Studio 15.8,如果安裝了最新版本的Visual studio 也就安裝了最新的穩定版本.NET Core SDK。

打開VS2017 新建一個SaaSApp的ASP.NET Core Web應用程序,

技術分享圖片

然後選擇空模板

技術分享圖片

安裝OrchardCore包

選擇諸如 .NET 這種成熟的生態系統,其最大的優勢之一,就是第三方軟件包和插件的量非常龐大。正如其它的軟件包系統一樣,你可以下載並安裝 .NET 軟件包,以獲取協助,來完成幾乎任何能想到的任務和難題。

NuGet 即是包管理工具,也是官方的軟件包倉庫(https://www.nuget.org )。你可以在網頁上檢索 NuGet 軟件包,並在自己的機器上使用終端(或者 Visual Studio 裏的圖形界面)安裝它們

NuGet包命令 目前預覽版需加 -Pre

Install-Package OrchardCore.Application.Cms.Targets -Pre

或者在NuGet搜索 OrchardCore.Application.Cms.Targets

技術分享圖片

項目開發

打開Startup.cs ,在ConfigureServices加入

技術分享圖片

然後刪除Configure 中的

app.Run(async (context) =>

{

await context.Response.WriteAsync("Hello World!");

});

加入

app. UseOrchardCore();

最終如下:

namespace SaaSApp

{

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.AddScoped<IResourceManifestProvider, ResourcesBuilder.ResourceManifest>();

services.AddOrchardCms();

services.Configure<IdentityOptions>(options =>

{

options.Password.RequireDigit = false;

options.Password.RequireLowercase = true;

options.Password.RequireUppercase = true;

options.Password.RequireNonAlphanumeric = false;

options.Password.RequiredUniqueChars = 3;

options.Password.RequiredLength = 6;

});

}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

if (env.IsDevelopment())

{

app.UseDeveloperExceptionPage();

}

app.UseOrchardCore();

}

}

這裏要和大家說一下的ResourcesBuilder.ResourceManifest,我們用我們Bootstrap中文網的CDN資源替換了內置的Google CDN資源,解決我們偉大的那堵墻所阻止的jquery庫,如果不替換,進入到Orchard Core 的管理後臺,你就會發現無法點開管理菜單。

然後運行程序,打開瀏覽會看到初始化安裝界面。輸入對應信息,然後完成安裝。

技術分享圖片

註意密碼必須包含大小寫數字和字符才能成功提交。如上圖中出現紅色是不行的。安裝好後配置一下,最終如下:

技術分享圖片

後臺為/Admin ,可以進入查看相關設置

技術分享圖片

為Orchard Core創建自定義模塊

我們將創建一個自定義模塊來擴展Orchard Core。你需要一個已經安裝了Orchard Core的web項目,上一章我們已經完成了這個工作。我們使用Visual Studio 2017打開項目。我們將添加一個新的.NET Core Class Library項目來包含我們的模塊:

技術分享圖片

Orchard Core需要從Web項目到每個模塊或主題的引用。所以讓我們繼續現在添加引用,這樣我們就不會忘記了。單擊Web項目上的“添加引用”,然後將Web項目中的引用添加到新模塊:

技術分享圖片

安裝模塊要求

一旦我們有了一個項目,我們就需要為項目添加一些東西,以便Orchard Core將其識別為一個模塊。打開NuGet包管理器,並安裝 OrchardCore.Module.Targets包。這個包包括(除其他外)我們需要能夠添加擴展點的抽象。如果您要創建主題,請安裝OrchardCore.Theme.Targets

我們要添加的第一件事是我們的Startup 類。這個類允許我們掛鉤Orchard Core的啟動管道; 這是我們做註冊依賴項或路由等事情的地方。最基本的啟動類看起來像這樣:

using Microsoft.Extensions.DependencyInjection;

using OrchardCore.Modules;

namespace CVMDesktop

{

public class Startup : StartupBase

{

public override void ConfigureServices(IServiceCollection services)

{

}

}

}

再添加一個清單文件Manifest.cs

每個模塊和主題都需要有一個清單,它是一Assembly:Module 標簽。清單存儲Orchard用於描述系統模塊和主題的元數據,例如名稱,版本,描述,作者和標簽。下面是我們的清單樣例:

using OrchardCore.Modules.Manifest;

[assembly: Module(

Name = "CVMDesktop",

Author = "Weyhd",

Website = "http://Weyhd.com",

Version = "0.0.1",

Description = "CVM Manage",

Category = "Infrastructure"

)]

此時,我們可以構建並運行。登錄站點的管理面板,您將看到模塊顯示在“模塊”頁面中:

技術分享圖片

自定義模塊添加Admin菜單以及配置permission

1.在自定義模塊項目中安裝Nuget包 OrchardCore.Environment.Navigation

技術分享圖片

2.新建AdminMenu.cs類

繼承INavigationProvider並實現BuildNavigation方法。

技術分享圖片

在builder中可設置多級菜單,在最後一級可以設置菜單請求路徑以及權限。

3.新建Permission.cs類

繼承IPermissionProvider並實現GetDefaultStereotypes以及GetPermissions方法。

技術分享圖片

4.啟動項目,進入後臺啟用模塊

在左側菜單即可看到新增的菜單

技術分享圖片

自定義模塊中添加數據庫CURD操作

根據Github上的issues#2248

1.新建Index類引用YesSql.Indexes命名空間,繼承MapIndex類

此Index包含實體中部分字段,亦可全部一致。

技術分享圖片

2.新建IndexProvider類,繼承IndexProvider<T>

T表示數據操作實體類

3.重寫Describe方法

技術分享圖片

4.在Map()中映射Index類與實體類相關字段。

技術分享圖片

5.新建Migrations類

繼承DataMigration,需要引用OrchardCore.Data.Migration命名空間。需要安裝nuget包OrchardCore.Data.Abstractions。

6.添加Create方法

註意名稱必須是Create,返回類型為Int

在Create方法中創建表

技術分享圖片

7.在想實現CURD操作的地方註入YesSql.ISession,使用yessql中的Isession進行相關curd操作即可

技術分享圖片

8.可使用IMemoryCache配合Isession進行相關操作,如

技術分享圖片

發布基於Orchard Core的官網