§ 公共文件
要制作安装包,首先确保install文件夹存在,若不存在则创建,路径为:
apps/book/install/
安装文件夹中必须包含一个应用配置文件
config.php
配置文件内容如下:
<?php
return array(
'app' => 'book',
'name' => '我的留言本',
'author'=> 'CmsTop',
);
其中app是应用的文件夹名称。name是应用的中文名称,author为该应用的作者。
§ 编写安装程序
安装程序共包含两个文件
install.php
install.sql
其中 install.sql可选
创建安装文件
install.php
该文件内容如下:
<?php
$menu = loader::model('admin/menu', 'system');
$menuids = array();
$menuid = $menu->add(array(
'parentid'=>5,
'name'=>'我的留言本',
'url'=>'?app=book&controller=index&action=index',
'sort'=>''
));
$menuids[] = $menuid;
$menuids[] = $menu->add(array(
'parentid'=>$menuid,
'name'=>'设置',
'url'=>'?app=book&controller=setting&action=index',
'sort'=>'1'
));
$installlog = str_replace('\\', '/', dirname(__FILE__)).'/install.log';
write_file($installlog, implode(',', $menuids));
其中menu部分是添加该应用的菜单,每个应用至少应包括一个主菜单。
在本应用中创建了一个主菜单:我的留言本,包含一个子菜单:设置。
其中主菜单的 parentid=5是表示该菜单在“扩展”菜单中显示。
如果应用需要创建数据表,则需要编写数据库脚本文件:
install.sql
本例中需要创建一个数据表 book,需要添加一个权限代码,需要编写默认的应用配置信息,脚本如下:
SET FOREIGN_KEY_CHECKS=0;
CREATE TABLE `cmstop_book` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`username` varchar(20) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`content` text,
`ip` char(15) DEFAULT NULL,
`addtime` int(11) DEFAULT NULL,
`state` tinyint(4) DEFAULT NULL,
`reply` text,
`replytime` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=65 DEFAULT CHARSET=utf8;
INSERT INTO `cmstop_aca` (`parentid`, `app`, `controller`, `action`, `name`) VALUES
(NULL, 'book', NULL, NULL, '我的留言本');
INSERT INTO `cmstop_setting` (`app`, `var`, `value`) VALUES
('book', 'bookname', '我的留言本'),
('book', 'iscode', '1'),
('book', 'ischeck', '1'),
('book', 'emailnotice', '0'),
('book', 'emailtitle', '您在的留言已经有回复'),
('book', 'emailcontent', 'HI,{username} 您好\n\n您在我们网站上的留言已有回复。你的留言内容:\n{content}\n\n回复:\n{reply}');
该文件在安装时会自动检测和执行,无需在install.php中强制包含。
§ 编写卸载程序
卸载程序共包含两个文件
uninstall.php
uninstall.sql
其中 uninstall.sql 可选
创建卸载文件
uninstall.php
文件内容如下:
<?php
$menu = loader::model('admin/menu', 'system');
$installlog = str_replace('\\', '/', dirname(__FILE__)).'/install.log';
$menuids = @file_get_contents($installlog);
if ($menuids)
{
$menu->delete($menuids);
}
@unlink($installlog);
如果你之前创建了install.sql添加了数据表内容,应该创建对应的uninstall.sql在卸载时删除对应的数据表。
本例中对应的uninstall.sql内容为:
DROP TABLE IF EXISTS `cmstop_book`;
DELETE FROM `cmstop_aca` WHERE app='book';
DELETE FROM `cmstop_setting` WHERE app='book';
该文件在卸载时会自动检测和执行,无需在uninstall.php中强制包含。
§ 创建其它资源
一个完整的应用还包括一些公共资源,如果前台的模版,JS和CSS文件在开发时并不保存在APP的目录下,打包发布时,我们还需要将这些文件打包进来。
在本章节前面“目录结构”中已经有介绍过,install/目录中还有 admin, img, templates 三个目录,似乎还不知道能干点啥,现在就用上了。
install/admin 存储的是后台的公共文件,即:public/admin/apps/book/ 目录下的文件应该复制到该目录
install/img 存储的是前台的公共文件,即:public/img/apps/book/ 目录下的文件应该复制到该目录
install/templtes 存储的是前台的模版文件,即:templates/default/book/ 目录下的文件应该复制到该目录
这些文件在执行应用安装时将会被自动复制到对应的调用目录中。
§ 打包发布
现在,我们已经编写了安装程序,卸载程序,也将所需要的资源文件放置进来了,将apps/book/整个目录打成zip包,就是一个完整的可发布的APP应用了。
感谢你能阅读到此处,现在,你已经具备了CmsTop的二次开发能力,一般的需求都难不倒你了。快动手试试吧!