您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Orchard模块开发流程文档
Orchard中的命令行工具在Orchard中提供了一个命令行工具,我们可以使用这个命令行工具创建用户、创建博客、生成代码、配置网站、打包模块等。并且这个命令行工具是可以扩充的,只要我们在自己开发的模块中创建一个Command类,并继承于Orcahrd框架所提供的DefaultOrchardCommandHandler。这样我们就可以在这个类中实现自己模块可以提供的命令了。具体实现方式,可以参考默认提供的Orchard.Users模块中的UserCommands.cs文件。启动此命令行工具,可以在Orchard网站的Bin目录下,执行orchard.exe文件。就是在项目文件中的Orchard.Web\Bin目录下。等待命令行工具初始成功后,会出现一个“orchard”提示行。在这里我们就可以输入相应的一些命令了。比如Orchard框架提供的helpcommands。它会列出全部可以使用的命令。输入:helpcommand(help+相应的命令会显示此相应命令的帮助信息),如输入Helpusercreate,显示如下:它提示我们在使用创建用户这个命令的时候该如何输入相应的参数。默认提供的命令都给出了很清楚的解释,就不在这里浪费篇幅介绍了,只要大家使用helpcommands命令列一下就都清楚了。在这里重点介绍一下自动生成代码模板的命令,这在我们做Orchard模块开发的时候会很有用。如果需使用Orachard的代码自动生成功能,就需要先安装一个CodeGeneration模块。我们可以在Orchard网站的管理后台的模块市场中找到它并安装。安装完成后在Features中启用一下这个模块。当然我们也可以用命令行工具去启用它,如:orchardfeatureenableOrchard.CodeGeneration。当Orchard.CodeGeneration启用后,我们就可以在Orchard命令行中运行相应的命令来创建模块了。创建模块在Orchard命令行工具中输入:codegenmoduleJT56.Advertisement模块创建成功后,可以在Orchard的Module目录中看见我们刚创建的模块项目。模块项目创建好以后,就要创建Migrations,定义ContentType,以及创建表结构Migrations在Orchard中提供了一套模块的安装和升级机制。当模块需要用到数据库的时候,Orchard通过一个Migrations.cs文件去创建和更新数据库。在Orchard命令行工具中输入以下命令,即可创建Migrations.cs文件模板。CodegendatamigrationJT56.AdvertisementMigrations.cs代码如下:publicclassMigrations:DataMigrationImpl{publicLocalizerT{get;set;}publicMigrations(){T=NullLocalizer.Instance;}publicintCreate(){//创建表结构SchemaBuilder.CreateTable(AdvertisementPartRecord,table=table.ContentPartRecord().Columnstring(Alimama,cfg=cfg.WithLength(1024))//定义表字段,数据类型.Columnstring(UrlAddress,cfg=cfg.WithLength(100)).Columnstring(Remark,cfg=cfg.WithLength(100)).Columnstring(Image,cfg=cfg.WithLength(100)).Columnstring(Title,cfg=cfg.WithLength(100)));//定义ContentPartContentDefinitionManager.AlterPartDefinition(AdvertisementPart,builder=builder.Attachable().WithField(Image,fieldBuilder=fieldBuilder.OfType(MediaLibraryPickerField).WithDisplayName(展示图).WithSetting(MediaLibraryPickerFieldSettings.Required,True))//定义Field,设置必须输入属性.WithDescription(AdvertisementPart.));//定义ContentTypeContentDefinitionManager.AlterTypeDefinition(Advertisement,cfg=cfg.DisplayedAs(广告管理).WithPart(CommonPart,p=p.WithSetting(OwnerEditorSettings.ShowOwnerEditor,False)).WithPart(AdvertisementPart).WithPart(AutoroutePart,part=part.WithSetting(AutorouteSettings.AllowCustomPattern,false).WithSetting(AutorouteSettings.AutomaticAdjustmentOnEdit,false).WithSetting(AutorouteSettings.PatternDefinitions,[{Name:'Advertisement',Pattern:'/gggl/{Content.Id}',Description:'Advertisement'}]).WithSetting(AutorouteSettings.DefaultPatternIndex,0)).WithPart(ViewCountPart).Creatable().Draftable());return1;}}定义好AdvertisementPart,以及创建表AdvertisementPartRecord后,在Models中定义AdvertisementPartModelModel当前模块中所提供的独有的内容部分的领域模型类和对应的数据记录类。这与传统的ASP.NETMVC项目的Models文件夹的含义并无二致,但在Orchard模块开发中,我们可以使用系统提供的ContentPart基础设施轻松建立起与CMS处理管线高度集成的自己的内容部分;在Models文件夹下添加AdvertisementPart.cs,AdvertisementPartRecord.cs两个文件,AdvertisementPartRecord.cs的代码如下:publicclassAdvertisementPartRecord:ContentPartRecord{publicvirtualstringAlimama{get;set;}//广告位publicvirtualstringUrlAddress{get;set;}//广告链接publicvirtualstringRemark{get;set;}//备注publicvirtualstringImage{get;set;}//定义FieldpublicvirtualstringTitle{get;set;}//名称}AdvertisementPart.cs的代码如下:publicclassAdvertisementPart:ContentPartAdvertisementPartRecord{publicstringAlimama{get{returnRetrieve(x=x.Alimama);}set{Store(x=x.Alimama,value);}}publicstringUrlAddress{get{returnRetrieve(x=x.UrlAddress);}set{Store(x=x.UrlAddress,value);}}publicstringRemark{get{returnRetrieve(x=x.Remark);}set{Store(x=x.Remark,value);}}publicstringImage{get{returnRetrieve(x=x.Image);}set{Store(x=x.Image,value);}}publicstringTitle{get{returnRetrieve(x=x.Title);}set{Store(x=x.Title,value);}}}建好相关的Model后,就应该创建相关的ContentPartDriver,来处理ContentPart的显示以及编辑DriversDrivers放置用于指示如何显示和编辑当前模块中特有的内容部分(ContentPart)的驱动程序,通常继承于Orchard框架中的ContentPartDriver,可重写其查看界面显示方法(Display)、编辑界面显示方法(Editor—Get时执行),编辑界面提交方法(Editor—Post时执行),还有其他一些导入导出之类的方法。从这些重写的方法来看,驱动器就好比是内容部件的Controller,驱动器中的方法就好比是内容部件的Action。在项目中创建文件夹Handlers和Drivers,在Drivers文件夹下面添加AdvertisementDriver.cs文件,输入代码如下:publicclassAdvertisementDriver:ContentPartDriverAdvertisementPart{privatereadonlyIAdvertisementService_advertisementService;publicAdvertisementDriver(IAdvertisementServiceadvertisementService){_advertisementService=advertisementService;}protectedoverridestringPrefix{get{returnAdvertisementPart;}}///summary///显示界面显示时执行(相当于Action)////summary///paramname=part相当于此Part的Model/param///paramname=displayType显示类型(如:details(详情显示)或summary(摘要显示))/param///paramname=shapeHelper类似视图引擎之类的东西,可以根据相应显示的动态对象去找对应的显示模板(相当于View)/param///returns这里相当于是返回了一个ActionResult,Orchard框架会针对这个返回值进行相应处理/returnsprotectedoverrideDriverResultDisplay(AdvertisementPartpart,stringdisplayType,dynamicshapeHelper){returnContentShape(Parts_Advertisement,()=shapeHelper.Parts_Advertisement());}///summary///编辑界面显示时执行(Get)////summary///paramname=part/param///paramname=shapeHelper/param///returns/returnsprotectedoverrideDriverResultEditor(AdvertisementPartpart,dynamicshapeHelper
本文标题:Orchard模块开发流程文档
链接地址:https://www.777doc.com/doc-2847812 .html