如何在Cuyahoga中新增一个简单的功能模块

Cuyahoga是一个国外著名开源的网站框架,能够方便的添加新的功能模块,而不需要改动框架本身 .下面介绍为其添加一个简单模块的步骤.
建议为每个模块创建一个独立的项目,以便能生成单一的程序集. 不要在Cuyahoga.Core项目中加入任何新的模块,不然在升级新版本时会遇到麻烦.

1.创建一个名为CuyahogaSampleModule的Asp.net Web Application 默认名字空间设为:Cuyahoga.Modules.Sample, 程序集名称设为:Cuyahoga.Modules.Sample .
目录结构如下:


还需在post-build event中添加以下命令:
xcopy //"$(ProjectDir)"Web\*.as?x "$(SolutionDir)"Web\Modules\Sample\

xcopy 
//"$(ProjectDir)"Web\*.gif "$(SolutionDir)"Web\Modules\Sample\

xcopy 
//"$(TargetDir)"Cuyahoga.Modules.Sample.dll "$(SolutionDir)"Web\bin\

在编译后将模块的页面,图片,程序集等文件copy到Web目录下.


2.在根目录下新增一个名为SampleModule.cs的类,作为模块的配置管理类.
这是模块的核心类 .用来存放一些不被.ascx或aspx包含的通用函数.这个类要派生自Cuyahoga.Core.Domain.ModuleBase.
代码如下 由于这是最基本的例子 所以不需要添加代码
using System;
using Cuyahoga.Core.Domain;//需要引用Cuyahoga.Core程序集

namespace Cuyahoga.Modules.Sample
{
    
public class SampleModule : ModuleBase
    {
        
    }
}


3.在Web目录中新增一个.ascx用户控件 用来显示模块内容.
    Cuyahoga是将用户控件嵌入到模板中来显示内容.我们在控件中写入"hello world".ascx.cs中的类需要继承Cuyahoga.Web.UI.BaseModuleControl.
using System;
namespace Cuyahoga.Modules.Sample
{
    
//需要引用Cuyahoga.Web程序集
    public partial class Sample : Cuyahoga.Web.UI.BaseModuleControl
    {
        
protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

3.在cuyahoga_moduletype表中添加一条记录,以便cuyahoga知道如何创建模块的实例
    所有安装的模块都在这个表中注册.在表中添加该模块信息 分别是模块名称, 程序集名称 ,模块控制器类名,路径(web目录下的),添加日期.
insert into cuyahoga_moduletype(name,assemblyname,classname,path,updatetimestamp) values('sample',
'
Cuyahoga.Modules.Sample','Cuyahoga.Modules.Sample.SampleModule','modules/Sample/Sample.ascx',getDate())

这样就添加上了一个新模块 , 编译以后 在后台管理页面为一个section添加该模块 ,可以看到效果了.


本文的大部分内容来自官方帮助文档 http://www.cuyahoga-project.org/. Created by jecray




posted @ 2007-09-01 23:54 jecray 阅读(...) 评论(...) 编辑 收藏