admin 发表于 2021-4-2 22:02:22

Destoon 自定义模块

1、先在 module 目录下,新建模型目录,如:book -> admin -> config.inc.php

config.inc.php 配置如下:

<?php
defined('IN_DESTOON') or exit('Access Denied');
$MCFG = array();
$MCFG['module'] = 'book';
$MCFG['name'] = '图书';
$MCFG['author'] = 'bananaplan';
$MCFG['homepage'] = 'www.baidu.com';
$MCFG['copy'] = true;
$MCFG['uninstall'] = true;
$MCFG['moduleid'] = xxx;

$RT = array();
$RT['file']['index'] = '图书管理';
$RT['file']['html'] = '更新网页';

$RT['action']['index']['add'] = '添加图书';
$RT['action']['index']['edit'] = '修改图书';
$RT['action']['index']['delete'] = '删除图书';
$RT['action']['index']['check'] = '审核图书';
$RT['action']['index']['recycle'] = '回收站';

$CT = true;
?>
2、在 file/setting 下,新建 module-xxx.php 和 book.sql 文件,内容如下:

<?php
defined('IN_DESTOON') or exit('Access Denied');
return array(
    'moduleid' => xxx,
    'name' => '图书',
    'moduledir' => 'read',
    'module' => 'book',
    'ismenu' => '0',
    'domain' => '',
    'linkurl' => 'http://xxx.xx/read/',
);
?>
DROP TABLE IF EXISTS `destoon_book`;
CREATE TABLE `destoon_book` (
`itemid` bigint(20) unsigned NOT NULL auto_increment,
`catid` int(10) unsigned NOT NULL default '0',
`title` varchar(100) NOT NULL default '',
`introduce` varchar(255) NOT NULL default '',
`price` decimal(10,2) unsigned NOT NULL default '0.00',
`tag` varchar(100) NOT NULL default '',
`keyword` varchar(255) NOT NULL default '',
`hits` int(10) unsigned NOT NULL default '0',
`thumb` varchar(255) NOT NULL default '',
`thumb1` varchar(255) NOT NULL default '',
`thumb2` varchar(255) NOT NULL default '',
`addtime` int(10) unsigned NOT NULL default '0',
`adddate` date NOT NULL default '0000-00-00',
`edittime` int(10) unsigned NOT NULL default '0',
`editdate` date NOT NULL default '0000-00-00',
`status` tinyint(1) NOT NULL default '0',
PRIMARY KEY(`itemid`)
) TYPE=MyISAM COMMENT='图书';

DROP TABLE IF EXISTS `destoon_book_data`;
CREATE TABLE `destoon_book_data` (
`itemid` bigint(20) unsigned NOT NULL default '0',
`content` mediumtext NOT NULL,
PRIMARY KEY(`itemid`)
) TYPE=MyISAM COMMENT='图书内容';
3、在 module/book/admin 下,新建 install.inc.php,内容如下:

<?php
defined('IN_DESTOON') or exit('Access Denied');
$setting = include(DT_ROOT.'/file/setting/module-xxx.php');
update_setting($moduleid, $setting);
$sql = file_get(DT_ROOT.'/file/setting/'.$module.'.sql');
sql_execute($sql);
include DT_ROOT.'/module/'.$module.'/admin/remkdir.inc.php';
?>
4、在 module/book/admin 下,新建 remkdir.inc.php,内容如下:

<?php
defined('IN_DESTOON') or exit('Access Denied');
file_copy(DT_ROOT.'/api/ajax.php', DT_ROOT.'/'.$dir.'/ajax.php');
install_file('index', $dir, 1);
install_file('list', $dir, 1);
install_file('show', $dir, 1);
?>
5、最后,在 module/book/admin 下,新建 menu.inc.php,内容如下:

<?php
defined('IN_DESTOON') or exit('Access Denied');
$menu = array(
      array("添加".$name, "?moduleid=$moduleid&action=add"),
      array($name."列表", "?moduleid=$moduleid"),
      array("审核".$name, "?moduleid=$moduleid&action=check"),
      array("分类管理", "?file=category&mid=$moduleid"),
      array("更新数据", "?moduleid=$moduleid&file=html"),
      array("模块设置", "?moduleid=$moduleid&file=setting"),
);
?>
至此,已配置完毕新的模型,基于此模型创建模块的一切数据和配置准备就绪:模型基本配置【config.inc.php】、模块设置模版【module-xxx.php】、数据库创建脚本【book.sql】、安装程序【install.inc.php、remkdir.inc.php】和 后台模块管理菜单【menu.inc.php】。下面可以新建模块了。

在模块管理中,新建继承 book 模型的模块,如新建了一个叫 读书 的模块,模块目录为 read。

模块创建成功后,系统会创建 read 前台文件夹,里面有 config.inc.php 等前台代码文件,同时,book 模型的安装程序会设置模块配置到 file/cache/module-xxx.php,并同步 yzmg_setting 数据表,执行数据表创建脚本,新建此模块所需的所有表结构,安装完毕。

虽然基于新模型的模块安装完毕了,但是后台管理和前台功能都还没有,所以下面就要进入先开发后台功能,再开发前台功能的过程了:

例如:

在 module/book/admin 下新建 index.inc.php,它是 book 模块后台功能的入口文件,在此文件中,编写后台逻辑代码,后台模版放在 module/book/admin/template 下。

在 module/book 下,一般要新建如 common.inc.php、global.func.php、book.class.php 的代码文件,以实现前后台统一的数据配置和业务逻辑代码的复用。

最后,基于此模块框架,完成后台和前台功能的开发。


页: [1]
查看完整版本: Destoon 自定义模块