之前复制过 DESTOON 的模块,时间久了就忘记了,正好群里有人在问,今天自己又碰到了,就把详细的过程记录下来,做个备忘,有同样需求的朋友也不用再四处找帖子了。
首先选择一个我们需要的模块(因为系统默认文章和信息模块是可以复制的,在这里我们只研究非默认的模块怎么复制),我选择的是模块名称是品牌,目录名是 brand,模块 ID 是 13,也可以根据需要选择要复制的模块。
第一步
复制根目录下的 brand 这个文件夹,粘贴然后重命名,这里我们用 rename 命名作为示范。于是根目录下多了一个名称为 rename 的文件夹,我们打开这个文件夹,找到 config.inc.php 这个文件,打开后里面是这样写的
<?php $moduleid = 13;
把这里的 13 改成一个现在模块 ID 里没有的数字,我们用 88 代替它作为示范。
第二步
找到根目录下 /module 这个文件夹打开,复制里面的 brand 文件夹,粘贴后重命名为 rename,打开这个新文件夹内的 admin/config.inc.php 这个文件,里面的文件是这样的(为方便理解,我加了注释)
<?php defined(‘IN_DESTOON’) or exit(‘Access Denied’); $MCFG['module'] = ‘brand’;// 这里改为 ‘rename’; $MCFG['name'] = ‘品牌’;// 这里改为你的新模块名比如:‘新模块’; $MCFG['author'] = ‘Destoon.COM’; $MCFG['homepage'] = ‘www.destoon.com’; $MCFG['copy'] = false;// 这里改为 true; $MCFG['uninstall'] = true; $MCFG['moduleid'] = 13;// 这里改为 88; $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']['expire'] = ‘过期品牌’; $RT['action']['index']['reject'] = ‘未通过品牌’; $RT['action']['index']['recycle'] = ‘回收站’; $RT['action']['index']['move'] = ‘移动品牌’; $RT['action']['index']['level'] = ‘品牌级别’; $CT = true;
将这里的品牌,全部替换为新模块名比如:’新模块’,并根据注释做相应修改后保存,然后打开同级目录内的 html.inc.php 这个文件在大概 69 和 70 行找到
if($update) {
require MD_ROOT.’/brand.class.php’;
$do = new brand($moduleid);
}
// 把两个 brand 替换为 rename 后保存
再打开同级目录内的 index.inc.php 这个文件,在大概在第三行找到
require MD_ROOT.’/brand.class.php’; $do = new brand($moduleid); // 同样把这两个 brand 替换为 rename 后保存,OK,
找到上级目录(根目录 /module/rename)的 my.inc.php 这个文件,用编辑器的替换功能把所有 brand 替换为 rename 后保存,再打开同级目录下的 brand.class.php 这个文件,同样用编辑器的替换功能把所有 brand 替换为 rename 后另存为(注意是另存为)rename.class.php。
第三步
找到模板路径(默认为根目录 /template/default)复制 brand 文件夹粘贴后重命名为 rename,再打开同级目录下的 member 文件夹找到 my_brand.htm 这个文件,复制粘贴后重命名为 my_rename.htm。
第四步、创建数据库
做完以上三步,我们的复制模块之路的代码方面就基本完成了,接下来就是复制数据库了,找到数据库中 destoon_brand 和 destoon_brand_data 这两张表,复制后重命名为 destoon_rename 和 destoon_rename_data,(如果数据库在运行中,可能需要暂停后执行以上操作)
第五步、后台设置
OK,完成之后登录后台,在我的面板 => 模块管理里面选择添加模块,然后填入模块名称如:‘新模块‘,在所属模型这个下拉选项中会发现多出来一个名为’新模块‘的选项,选中它,在安装目录里填上 rename,点确定。然后去功能模块中看,是否已经多出来一个名为 ‘新模块‘的功能模块?如果出现,说明刚刚的操作没有问题,恭喜模块已经添加完成了。但是沉浸在喜悦之中急切的想在新模块中添加数据的时候发现页面是空白的,这是为什么呢?别紧张,在模块设置里面有个信息排序方式,在这里随便选择一个,顺便把下面的列表或搜索主字段也填填吧,填完之后点确定,再去试一试添加是不是就可以使用了?
其他问题
实际使用过程中还会遇到一个问题,就是添加的这个模块在会员中心使用的时候提示没有权限,请升级,去看了后台会员组权限发布信息的权限已经做了勾选,为什么还提示权限不够呢?解决方法是,找到根目录 /module/member/admin/template/group_edit.tpl.php 这个文件,在大概 762 行找到如下代码
</tr> <tr> <td class=”tl”> 发布下载总数限制 </td> <td> <input type=”text” name=”setting[down_limit]” size=”5″ value=”<?php echo $down_limit;?>”/> </td> </tr> <tr> <td class=”tl”> 免费发布新模块数量 </td> <td> <input type=”text” name=”setting[down_free_limit]” size=”5″ value=”<?php echo $down_free_limit;?>”/> </td> </tr>
将其修改为
</tr> <tr> <td class=”tl”> 发布新模块总数限制 </td> <td> <input type=”text” name=”setting[rename_limit]” size=”5″ value=”<?php echo $rename_limit;?>”/> </td> </tr> <tr> <td class=”tl”> 免费发布下载数量 </td> <td> <input type=”text” name=”setting[rename_free_limit]” size=”5″ value=”<?php echo $rename_free_limit;?>”/> </td> </tr>
(改动的地方标红)复制这段改过的代码放在前面找到的那段代码的下面,保存后刷新,再去设置里面查看一下,最下面多出来两个需要填写的输入框,填进相关数字,点确定。OK,到这里会员就可以使用新模块了。
参考文献