制作安装包

§   公共文件

要制作安装包,首先确保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中强制包含。

§   创建其它资源

一个完整的应用还包括一些公共资源,如果前台的模版,JSCSS文件在开发时并不保存在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的二次开发能力,一般的需求都难不倒你了。快动手试试吧!

 



Copyright ©2009 - 2014 CmsTop.Com.All rights reserved.
思拓合众