五、扩展Orchard(八) Writing a widget
Orchard中widget是一块可重用的UI,可用于网站任意页面。例如:一个widget可能包含了tag,search form,Twitter feed。Widget是一个内容类型,使用重用存在的代码和UI。
Turning a Part into a Widget
把content part加入widget,需要根据widget类型中的定义更新数据库。完成这件事,需要为part的 Migrations.cs文件添加一个UpdateFrom<version#> 方法。
using System.Data; using Maps.Models; using Orchard.ContentManagement.MetaData; using Orchard.Core.Contents.Extensions; using Orchard.Data.Migration; namespace Maps { public class Migrations : DataMigrationImpl { public int Create() { // Creating table MapRecord SchemaBuilder.CreateTable("MapRecord", table => table .ContentPartRecord() .Column("Latitude", DbType.Single) .Column("Longitude", DbType.Single) ); ContentDefinitionManager.AlterPartDefinition(typeof(MapPart).Name, cfg => cfg .Attachable()); return 1; } public int UpdateFrom1() { // Create a new widget content type with our map ContentDefinitionManager.AlterTypeDefinition("MapWidget", cfg => cfg .WithPart("MapPart") .WithPart("WidgetPart") .WithPart("CommonPart") .WithSetting("Stereotype", "Widget")); return 2; } } }
这个示例中,UpdateFrom1方法组合
MapPart
,WidgetPart
, and CommonPart
,创建MapWidget,然后设置widget。WidgetPart和CommonPart是Orchard内置的,这个方法返回2,新版本号。
在管理面板-》Widgets中可以管理