在Orchard中寫一個Widget案例
在Orchard中寫一個Widget案例是本文要介紹的內容,本文在以前所創建的產品模塊基礎上,擴展了一個可以顯示***發布產品的Widget。通過此示例講解Widget的一些相關概念和開發Widget的基本步驟。關于產品模塊示例的介紹請點擊這里。
什么是Widget
Widget就是小部件的意思。是一個可重用的UI塊,它可以部署到網站的任意區域(Zone)中。如網頁上常見的標簽云、快速搜索,***博文,博文日歷等等這些都可以做成小部件的形式來豐富頁面的布局。
需求分析
本例要實現一個能在首頁顯示***發布的N條產品的功能。根據這個需求,我們至少需要有兩個畫面來完成這個功能,一是在添加Widget的時候可以設置顯示***的條數的畫面,另外一個就是顯示***N條產品的畫面。
創建內容部件
首先我們需要創建一個內容部件。因為在Orchard中內容的組織都是以內容部件為單位的,Widget也不例外。這個內容部件需要完成以下功能:
1、存取***顯示條數的設置;
2、顯示***N條數據。
和以前創建產品內容部件一樣,我們需要創建一個數據模型(RecentProductsPartRecord),用于存儲***顯示條數的設置。還需要創建一個RecentProductsPart,同時還需要創建這個part的處理器(RecentProductsPartHandler)和驅動器(RecentProductsPartDriver),也當然需要創建這個Part的編輯視圖和顯示視圖,同時我們也需要在Placement.info文件中注冊新添加部件的一些信息。
這些步驟和代碼都類似于創建產品部件時的代碼,大家可以在本示例代碼下載中查看。有一點需要注意的是這個部件的顯示并不是顯示***N條的設置,而是需要顯示***N條產品。
將內容部件轉成一個Widget
要將內容部件定義為一個Widget,需要在數據庫安裝文件中指定相應的代碼來實現。我們打Migrations.cs文件,在原有的基礎上添加一個UpateFrom1的方法表示這個模塊需要升級,輸入以下代碼:
- public int UpdateFrom1()
- {
- //創建一個表存儲設置***多少條數據
- SchemaBuilder.CreateTable("RecentProductsPartRecord", table => table
- .ContentPartRecord()
- .Column<int>("Count") //產品價格
- );
- //定義一個Widget
- ContentDefinitionManager.AlterTypeDefinition("RecentProducts", cfg => cfg
- .WithPart("RecentProductsPart")
- .WithPart("WidgetPart")
- .WithPart("CommonPart")
- .WithSetting("Stereotype", "Widget"));
- return 2;
在定義一個Widget的時候需要結合需要變成Widget的部件和WidgetPart部件以及CommonPart部件,并且需要設置此類型的屬性為Widget。
部署Widget
通過上面幾個簡單的步驟,一個Widget就完成了。首先我們用管理登錄管理后臺,一進入后臺我們就可以看見有模塊需要升級的提醒。

點擊升級產品模塊

升級完成后進入控制后臺的Widgets菜單,并選擇當前層為TheHomePage(表示只在首頁顯示),然后在AsideFirst上點擊添加。選擇我們剛剛創建的RecentProducts小部件。

Title屬性是小部件的標題,我們可以輸入RecentProducts,Count屬性就是需要顯示的記數了,我們輸入2。保存后回到前臺網站的首頁就能看見效果了。

小結:在Orchard中寫一個Widget案例的內容介紹完了,希望通過Widget應用內容的學習能對你有所幫助!




























