2018.9.25 日深圳市友浩達科技有限公司發佈基於Orchard Core開發的官網 http://www.weyhd.com/。 本篇文章為你介紹如何基於Orchard Core開發一個公司網站。Orchard Core是一個免費和開源的社區交流項目,致力於在ASP.NET Core平臺開發應 ...
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進行相關操作,如