用自定义的 module 创建一个简单站点
一、创建自定义模块 mymodule
1、 在首页 ( 例如 http://localhost/seagull/www/index.php) 右边的登入框(如下图所示)中输入用户名和密码,登入系统后台。(这里的用户名和密码是之后在安装时创建的“ Admin username ”)
2、 进入后台的界面,如下图,选择左边菜单的“ General ”- > “ Module Generator ” (如下图的 1,2 标示)进入“建立模组 ”(如下图的标示 3 )界面。
其中:
1) 模组名称( Module Name ) :填写自定义的模块名称,例如这里用“ mymodule ”。
2) 管理者名称( Manager Name ) :模块的 MGR 类名称(即 seagull 目录 modules/ 模块名 /classes/ 目录下所有后缀为 Mgr.php 的类名)。例如这里用“ mymodule ”,则之后生成的文件名就是 mymoduleMgr.php 。
3) 添加下列方法( Add following methods ) :勾选需要添加方法。这里说的方法,即是上面“ manager 类 ”中的 action 名称。一般情况下,这些方法都是必要的。
4) 创建 CRUD action :如果选中了此复选框,则在提交后, SGL 会重建数据库中所有表的 DataObject 实体类,保存在 SGL_VAR_DIR/cache/entities 目录中。之后它会检测在这个目录中是否有存在这个表对应的生成文件,如果没有就出现“ Please generate a table (with the same name as your manager entity, …… ”(如下图所示)的错误提示。因此,如果数据库中没有与上面“模组名称 ”一样的表名时,此复选框不打勾 。
5) 建立模板( Create Templates ) :生成对应上面“添加下列方法 ”所选 action 的模板。即 seagull 目录下,总路径为: seagull/modules/mymodule /templates/ 下面的后缀名为“ .html ” 的模板。
6) 缓存 ini 文件( Create language files ) :创建语言文件,即 seagull/modules /mymodule /lang/ 目录
7) 建立 ini 档( Create ini file ) :创建模块的配置文件,即 conf.ini 文件
填写好以上栏位(如下图标示 1 所示)之后,点击“立即建立模组 ”按键(如下图标示 2 所示)。此时,页面刷新,并显示提示信息“ Files for the mymodule module successfully created. …… ”(如下图标示 3 所示)。此时说明创建成功。
3 、选择左边菜单的“ General ”- > “ Manage Modules ” (如下图的 1,2 标示)进入“模组管理”。此时,你可以在“模块列表”中看到“ mymodule ”已安装成功(如下图标示 3 )。
二、设置导航栏显示菜单
1 、在后台左边菜单中选择“ Navigation ”- > “ Manage Navigation ”,(如下图的 1,2 标示)进入“ Section 管理”。在这里,点击“动作”中的“新建 Section ”按键(如下图的标示 3 ),进入“ Section 管理 :: 新建 Section ”界面。
2、 在“ Section 管理 :: 新建 Section ”界面的“ section 信息 ”标签页中,如下图所示:
其中:
1、 section 标题 :输入在导航栏显示菜单中要显示的名称,例如这里用“ mymodule ”。
2、 父 section :选择菜单名称的父级菜单。如下图所示,这里在两大类: a) User menu ,一般用户的显示菜单,即前台导航栏的显示菜单; b) Admin menu ,管理员的显示菜单,即后台左边的导航菜单。
我们现在的制作的“ mymodule ”是希望一般用户不用登入也可以看到的,所以这里选择“ User menu ”作为父级。
3、 目标 :即选择菜单“ mymodule ”的链接指向。因为我们现在是要使用之前创建的“ mymodule ”模块,所以,这里我们选择“从指定模块输出 ”这个选项。
选择“从指定模块输出 ”选项之后,“目标 ”下面的栏位(“静态文章标题 ”栏位是针对“现存的静态内容 ”选项)就相应改变了,如下图所示:
4、 模块 :指定菜单“ mymodule ”的所在模块。如下图所示:
下拉框中,列出所有已安装的模块名称,这里我们选择“ mymodule ”模块。
5、 管理类 :选择完“模块 ”之后,“管理类 ”的下拉框中将列出该模块的所有 MGR 类(即 seagull 目录 modules/ 模块名 /classes/ 目录下所有后缀为 Mgr.php 的类名)如下图所示:
这里我们的“ mymodule ”模块只有一个管理类,即“ MymoduleMgr ”。
6、 action :指定上面“管理类 ”中的 action 名称,下拉框中,列出“管理类 ”中所有的 action 名称。如下图所示:
这里我们选择“ list ”,也可以不做选择。当不做选择时,系统会自动读取管理类代码中设定的默认 action ,一般情况下代码中的默认 action 值是 list 。
3、 选择“ Section 管理 :: 新建 Section ”界面的“编辑选项 ”标签页,如下图标示 1 所示:
然后在图上标示 2 中设置如下:
1) 发布: 即发布菜单“ mymodule ”。这里的复选框必需打勾 。
2) 允许浏览: 即选择允许查看菜单“ mymodule ”的用户组角色,也可以说是,为其设置访问权限。(注:这里列出了所有的用户组以供选择 )
设置好以上,点击“存贮 ”按键(如上图标示 3 所示)之后,页面跳回“ Section 管理 :: 浏览 ”界面,并显示提示信息“完成区段新增 ”(如下图标示 1 所示)。此时你可以在列表中看到新增的“ mymodule ”菜单,如下图标示 2 所示。
4、 此时,再回到首页 ( 即,例如 http://localhost/seagull/www/index.php ) ,你可以在导航栏上看到“ mymodule ”菜单。
如下图 1 为未登入的首页界面
图 2 为管理员登入后的首页界面
5、 此时点击导航栏上的“ mymodule ”菜单,即可进入对应界面,界面情况如下图所示:
图中红色区域,便是“ mymodule ”所在的模块“ mymodule ”中的管理类“ MymoduleMgr ”对应 action 为“ list ”中所指定的模板的显示内容,即 seagull 目录下,总路径为: seagull/modules/ mymodule /templates/ 下面的“ mymoduleList.html ” 模板。
此时,一个站点即已架设成。 接下来就是对模块“ mymodule ”的代码操作,这里就此做一个简单的增加、删除、修改操作的例子。
三、代码部份—— 简单的增加、删除、修改操作的例子
1 、在数据库中建表 。
1 )表名 :打开 seagull/modules/mymodule /classes/MymoduleMgr.php 文件,找到函数 function _cmd_list ,中的 SQL 语句,我们可以看到“ $this->conf['table']['mymodule'] ”(如下图标示所示),这里的 'mymodule' 就是在数据库中要建的表名。 (当然,你也可以改成别的名称。)
2 )建表 : 例如建一个如下结构的表:
CREATE TABLE IF NOT EXISTS `mymodule` (
`mymodule_id` int(11) NOT NULL auto_increment,
`name` varchar(100) default NULL,
`message` varchar(100) default NULL,
PRIMARY KEY (`mymodule_id`)
)
3 )重建 DataObject : 每次创建、修改表结构 之后,都要 在 seagull 后台去重建 DataObject 才行。 步骤如下:
登入后台,选择左边菜单的“ General ”- > “ Maintenance ” (如下图的 1,2 标示)进入“维户”界面,点击“立即重建 Data Objects ”按键(如下图的标示 3 )。 此时页面刷新,显示提示信息“成功重建 Data Objects ”说明,重建完功。
2、 编辑代码。
1) 增加功能 :在 MymoduleMgr.php 文件的函数 function _cmd_add 中,找到其调用的模板名称(如: $output->template = 'mymoduleEdit.html'; ),这里,我们可以看到调用的是“ mymoduleEdit.html ”模板,故,打开 /modules/mymodule /templates/ mymoduleEdit.html 文件。
在 mymoduleEdit.html 文件中,可以看到,一些基本的代码(如: form ,table , button 等),已自动生成好,这里我们只要添加一些所需要的即可。例如,如下图红色区域所示为新增的内容。(注:如果之前,在“ Module Generator ”中创建 module 时,设了“创建 CRUD action ”选项的话,此处系统就会自动成生代码,无需再添加。 )
2) 测试增加功能是否成功:
点击菜单上的“ mymodule ” , 进入“ MymoduleMgr :: List ”界面,点击“ Add entry ”按键,进入“ MymoduleMgr :: Add ”界面,此时,我们可以看到,此界面内容,与上面添加的代码相对应。在这里,填写资料后,点击“存贮 ”按键(如下图所示),此时,页面自动跳转到“ MymoduleMgr :: List ”界面,并且显示“ mymodule insert successfull ”的提示信息,此时说明,添加成功 。
3) List 显示界面:
在添加成功后,在“ MymoduleMgr :: List ”界面中,我们可以看到如下图所示的显示界面:( 注:如果之前,在“ Module Generator ”中创建 module 时,设了“创建 CRUD action ”选项的话,则此处系统自动成生的代码,无需再修改。 )
此时,我们需要修改两个文件:
a) MymoduleMgr.php 文件的函数 function _cmd_list
i) 去掉判断“ if (false) ”这行代码。
ii) 修改里面的 SQL 语句:
将“ $query = "SELECT 0, 1 FROM {$this->conf['table']['mymodule']} "; ”
改成“ $query = "SELECT * FROM {$this->conf['table']['mymodule']} "; ”
b) 找到其调用的模板 'mymoduleList.html ' , 修改内容如下图所示,其中,加注释的绿色区域 为原来代码,红色区域 为修改后代码。
c) 刷新“ MymoduleMgr :: List ”界面,我们可以看到如下图所示的显示内容,此时说明,修改成功 。
4) 编辑功能:
在“ MymoduleMgr :: List ”界面中,点击记录中“编辑”栏下的“ edit ”链接,进入“ MymoduleMgr :: Edit ”界面(如下图所示),此时,即可修改内容,修改好之后,点击“存贮 ”按键。此时,页面自动跳转到“ MymoduleMgr :: List ”界面,并且显示“ mymodule update successfull ”的提示信息,此时说明,修改成功 。
5) 删除功能 :
a) 修改代码 :在“ MymoduleMgr :: List ”界面对应的 模板 'mymoduleList.html ' 中,添加一个选择栏位,具体代码如下图两个红色区域所示:
b) 调试: 在修改好模板之后,刷新“ MymoduleMgr :: List ”界面,可以看到如下图 1 所示复选框,勾选后,点击“ Delete ”按键(如下图 2 所示)。
此时系统刷新页面,显示“ mymodule delete successfull ”的提示信息(如下图 1 所示),并且,你可以看到下面表中已没有了记录(如下图 2 所示),此时说明,删除成功 。
到此,整个站点的基本功能也完成了!