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中可以管理