原文来自:https://www.zixuephp.com
前言
我是菜鸟,偶然间我遇到了织梦(DEDECMS V5.7 SP1)想做一些自己需要的功能,听说可以开发插件,看了一些网上的教程,制作了一个没有任何实际功能的lxl_test插件。展示给大家DEDE插件开发的基本流程。我只是刚刚开始学习DEDE,教程中还有很多不足之处希望网友们批评指正。我的QQ68817033希望大家学习交流。建议先把附录二中的内容复制另存为***.xml文件,上传安装后感受一效果。
制作时间:2012-2-4
PHP环境:DedeAMPZ平台
织梦程序:DEDECMS V5.7 SP1
第一步:制作前台程序和模版
前台程序lxl_test_a.php存放在根目录/plus
dede前台
<?php
require_once(dirname(__FILE__)."/../include/common.inc.php");
//加载DEDE核心程序
require_once(DEDEROOT."/templets/plus/lxl_test_a.htm");
//加载模板
?>
前台模板lxl_test_a.htm存放在根目录/templets/plus
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=gbk" />
<title>前台模板</title>
</head>
<body>
前台模板
</body>
</html>
注意:由于插件是GBK编码所以要设置content="text/html;charset=gbk"
第二步:制作后台程序和模版
后台程序lxl_test_b.php存放在根目录/dede
dede后台
<?php
require_once(dirname(__FILE__). "/config.php");
//加载DEDE核心程序
require_once(dirname(__FILE__). "/templets/lxl_test_b.htm");
//加载模板
?>
注意:后台调用模板与前台不同,至于为什么不同,DEDE有多少种调用模板的方式不要问我
后台模板lxl_test_b.htm存放在根目录/dede/templets/plus
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=gb2312" />
<title>后台模板</title>
</head>
<body>
后台模板
</body>
</html>
注意:gbk与gb2312有相同的效果,至于原因我也不知道
第三步:在织梦后台打包
(1)在后台点击模块>>模块生成向导
填写模块名称,勾选封装类型,填写联系Email,开发团队,开发时间,官方网址。没有使用会员系统所以选择不涉及。
注意:模块识别码是由模块名称和Email自动生成,就是打包xml文件的文件名,不同插件识别码不能相同
(2)填写后台你管理菜单
<m:topname='test模块管理' c='6,' display='block' rank=''>
<m:itemname='test管理1' link='lxl_test_b.php' rank='' target='main' />
</m:top>
这里设置菜单在安装后效果如下图
还可以在安装程序中添加后台管理菜单在文章的最后会给出。
(3)填写使用说明,这个需要自己填写
(4)设置安装程序由于例子中没有数据库操作,所以可以选择自动生成,内容空白
也可以在这里为后台添加菜单项,在最后会给出一个例子
(5)设置删除程序由于例子中没有数据库操作,所以可以选择自动生成,内容空白
(6)设置编译所有文件,并在文件列表中添加响应的文件。
../plus /lxl_test_a.php
../templets/plus/lxl_test_a.htm
../dede/lxl_test_b.php
../dede/templets/lxl_test_b.htm
第四步:备份、交流共享、安装插件
辛辛苦苦制作的插件,怎样备份,共享,让其他网友安装呢。
(1)备份、共享插件
经过织梦的打包,所有关于插件的信息和文件都打包成一个xml文件,
存放在根目录\data\module目录下,文件名是模块识别码(由模块名称和Email生成)。这样你就可以把你制作的插件发到网上与大家交流共享。
(2)安装插件
下载DEDECMS的插件文件(扩展名是xml)
在后台点击模型>>上传新模块
选择已经下载的xml文件点击确定上传就可以了。
出现这个页面说明已经上传好了,可以点击安装出现安装页面。
根据不同的需要选择对对于已存在文件处理方法后点击完成安装
安装完成后就可以再后台管理插件,在前台调用插件。
(3)管理插件
在后台点击模块>>模块管理
出现模块管理页面可以管理你自己的插件。
其中可以卸载、安装、修改、删除、还可以查看使用说明和插件的详细情况。都是点点鼠标就可以了,只要认真阅读DEDE给个提示就不会有问题。
第五步:最后也是最重要的<页面调用>
可以再前台任意显示模板中添加如下代码调用你制作的模板。
<li><ahref="{dede:fieldname='phpurl'/}/lxl_test_a.php" >lxl调用测试</a></li>
总结:以上教程侧重于制作一个插件每一个过程,没有任何功能。全部代码由织梦自带模板的代码简化得到。
附录一:把后台菜单添加在dede_plus表中,效果如下图
(1)在安装程序添加如下代码
INSERT INTO `dede_plus` VALUES (10, 'lxl_test', '<m:itemname=''lxl_test_menu'' link=''lxl_test_b.php'' rank=''plus_lxl_test'' target=''main'' />', '', 'lxl', 1, '');
(2)在卸载程序添加如下代码
DELETE FROM `detest_plus` whereplusnamelike 'lxl_test_menu';
(3)在插件管理器中管理插件
在后台点击模型>>插件管理器
出现插件管理页面
可以在这里对插件进行修改、启用、禁用、删除。个人感觉DEDE是为了区分插件和模块才设计了这两种后台菜单模式。
附录二:教程制作插件的xml文件
只要复制另存为****.xml文件就可以安装使用了。
<module>
<baseinfo>
name=lxl_test
team=lxl
time=2012-02-04
email=68817033@qq.com
url=
hash=f12fc1644b97629e1b7f7f7e1b27b3ea
indexname=
indexurl=
ismember=0
autosetup=1
autodel=1
lang=gb2312
moduletype=soft
</baseinfo>
<systemfile>
<menustring>
PG06dG9wIG5hbWU9J3Rlc3TEo7/pudzA7ScgYz0nNiwnIGRpc3BsYXk9J2Jsb2NrJyByYW5rPScnPg0KPG06aXRlbSBuYW1lPSd0ZXN0udzA7TEnIGxpbms9J2x4bF90ZXN0X2IucGhwJyByYW5rPScnIHRhcmdldD0nbWFpbicgLz4NCjwvbTp0b3A+DQoNCg==
</menustring>
<readme>
yrnTw8u1w/fOxLz+DQrV4srH0ru49sD919M=
</readme>
<setupsql40>
SU5TRVJUIElOVE8gYGRlZGVfcGx1c2AgVkFMVUVTICgxMCwgJ2x4bF90ZXN0JywgJzxtOml0ZW0gbmFtZT0nJ2x4bF90ZXN0X21lbnUnJyBsaW5rPScnbHhsX3Rlc3RfYi5waHAnJyByYW5rPScncGx1c19seGxfdGVzdCcnIHRhcmdldD0nJ21haW4nJyAvPicsICcnLCAnbHhsJywgMSwgJycpOw==
</setupsql40>
<delsql>
REVMRVRFIEZST00gYCNAX19wbHVzYCB3aGVyZSBwbHVzbmFtZSBsaWtlICdseGxfdGVzdF9tZW51Jzs=
</delsql>
<setup>
</setup>
<uninstall>
</uninstall>
<oldfilelist>
../plus /lxl_test_a.php
../templets/plus/lxl_test_a.htm
../dede/lxl_test_b.php
../dede/templets/lxl_test_b.htm
</oldfilelist>
</systemfile>
<modulefiles>
<file type='file' name='../plus /lxl_test_a.php'>
ZGVkZSDHsMyoDQo8P3BocA0KcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLiIvLi4vaW5jbHVkZS9jb21tb24uaW5jLnBocCIpOw0KLy+809TYREVERbrL0MSzzNDyDQpyZXF1aXJlX29uY2UoREVERVJPT1QuIi90ZW1wbGV0cy9wbHVzL2x4bF90ZXN0X2EuaHRtIik7DQovL7zT1NjEo7DlDQo/Pg==
</file>
<file type='file' name='../templets/plus/lxl_test_a.htm'>
PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWdiayIgLz4NCjx0aXRsZT7HsMyoxKOw5TwvdGl0bGU+DQo8L2hlYWQ+DQoNCjxib2R5Pg0Kx7DMqMSjsOUNCjwvYm9keT4NCjwvaHRtbD4NCg0K
</file>
<file type='file' name='../dede/lxl_test_b.php'>
ZGVkZSC688yoDQo8P3BocA0KcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLiAiL2NvbmZpZy5waHAiKTsNCi8vvNPU2ERFREW6y9DEs8zQ8g0KcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLiAiL3RlbXBsZXRzL2x4bF90ZXN0X2IuaHRtIik7DQovL7zT1NjEo7DlDQo/Pg0KDQo=
</file>
<file type='file' name='../dede/templets/lxl_test_b.htm'>
PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWdiMjMxMiIgLz4NCjx0aXRsZT6688yoxKOw5SA8L3RpdGxlPg0KPC9oZWFkPg0KDQo8Ym9keT4NCrrzzKjEo7DlDQo8L2JvZHk+DQo8L2h0bWw+DQoNCg0K
</file>
</modulefiles>
</module>