织梦dedecms插件开发实例

织梦dedecms插件开发实例-1

今天制作了一个简单的dedecms用户留言插件,先分享出来,后续可能会发博文总结各种织梦插件制作方法和原理。

插件开发步骤:1、制作程序文件和建立所需用到的表  2、使用模块生成向导生成插件XML 3、安装使用。

下面以我制作的简单用户留言插件为例,演示如下:

一、实现的功能

这个例子实现的功能很简单,只是用来演示插件制作的原理,我们弄清楚原理后,就可以写代码实现其他各种功能。

前台页面:用户可提交留言

 

后台管理页面:

 

二、制作程序文件和在数据库中建立所用到的表。这个小插件用到四个文件和一个表,分别如下:

1、前台表单页面 “/mymessage.htm”。这个页面可放在前台任意位置,也可以放到模板文件夹中使用。实例中我将它放在了网站根目录。

[html] view plain copy

1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

2. <html xmlns="http://www.w3.org/1999/xhtml">  

3. <head>  

4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  

5. <title>在线留言小插件</title>  

6. <script type="text/javascript">  

7. function check(){  

8.     if(document.myForm.title.value == ""){  

9.         alert("留言标题不能为空!");  

10.         return false;  

11.     }else if(document.myForm.content.value == ""){  

12.         alert("留言内容不能为空!");  

13.         return false;         

14.     }else if(document.myForm.validate.value == ""){  

15.         alert("验证码不能为空!");  

16.         return false;         

17.     }  

18.     return true;  

19. }  

20. </script>  

21. </head>  

22.   

23. <body>  

24. <form name="myForm" method="post" action="/plus/mymessage.php" onsubmit="return check();">  

25.   <input type='hidden' name='dopost' value='save' />  

26.   留言标题:  

27.   <input type="text" name="title" value="" />  

28.   <br />  

29.   留言内容:  

30.   <textarea name="content" cols="60" rows="8"></textarea>  

31.   <br />  

32.   验证码:  

33.   <input name="validate" type="text" id="vdcode2" size="10" class="ipt-txt" style="text-transform: uppercase;">  

34.   <img src='/include/vdimgck.php' style="cursor:pointer" onclick="this.src=this.src+'?'" title="点击我更换图片" alt="点击我更换图片" /><br />  

35.   <input type="submit" name="subBtn" value="提 交" />  

36. </form>  

37. </body>  

38. </html>  


2、保存留言文件  “/plus/mymessage.php”

[php] view plain copy

1. <?php  

2. require_once(dirname(__FILE__)."/../include/common.inc.php");  

3. if(empty($dopost)) $dopost = '';  

4.   

5. if($dopost=='save')  

6. {  

7.     $validate = isset($validate) ? strtolower(trim($validate)) : '';  

8.     $svali = GetCkVdValue();  

9.     if($validate=='' || $validate!=$svali)  

10.     {  

11.         ShowMsg('验证码不正确!','-1');  

12.         exit();  

13.     }  

14.     $title = htmlspecialchars($title);  

15.     $content = htmlspecialchars($content);  

16.     $query = "INSERT INTO `#@__plus_mymsg`(`title`,`content`) VALUES('$title','$content')";  

17.     $dsql->ExecuteNoneQuery($query);  

18.     ShowMsg('留言成功!','/mymessage.htm');   //这里我图省事儿,直接写绝对路径了,实际应用的时候不应该这样。  

19. }  

20. ?>  

3、后台管理留言页面 “/后台管理文件夹/templets/mymessage_main.htm”

[html] view plain copy

1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

2. <html xmlns="http://www.w3.org/1999/xhtml">  

3. <head>  

4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  

5. <title>留言管理</title>  

6. <link href="css/base.css" rel="stylesheet" type='text/css'>  

7. <script language='javascript'>  

8. function Sel(stype)  

9. {  

10.       for(var i=0;i < document.getElementsByName('aids').length;i++)  

11.       {  

12.           if(stype=='all') document.getElementsByName('aids')[i].checked=true;  

13.           else document.getElementsByName('aids')[i].checked=false;  

14.       }  

15. }  

16. function checkSubmit()  

17. {  

18.     var str = '';  

19.     for(var i=0;i < document.getElementsByName('aids').length;i++)  

20.     {  

21.           if(document.getElementsByName('aids')[i].checked){  

22.             if(str=='') str += document.getElementsByName('aids')[i].value;  

23.             else str += ',' + document.getElementsByName('aids')[i].value;  

24.           }  

25.     }  

26.     if(str=='')  

27.     {  

28.         alert('你没选择任何内容!');  

29.         return false;  

30.     }  

31.     else  

32.     {  

33.         location="mymessage_main.php?aids="+str+"&dopost=delall";  

34.     }  

35. }  

36. </script>  

37. </head>  

38.   

39. <body background='images/allbg.gif' leftmargin='8' topmargin='8'>  

40. <table width="98%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#D6D6D6">  

41.   <tr>  

42.     <td height="28" background="images/tbg.gif" colspan="4" style="padding-left:10px;"><div style="float:left"> <b>留言管理</b> </div></td>  

43.   </tr>  

44.   <tr>  

45.     <td height="30" align="center" bgcolor="#F9FCEF"  colspan="4"><form action="mymessage_main.php" name="form1" method="get">  

46.         <table border="0" cellspacing="0" cellpadding="3">  

47.           <tr>  

48.             <td>关键字:</td>  

49.             <td><input name="keyword" type="text" id="keyword" size="12" style="width:250px" value="<?php echo $keyword; ?>" /></td>  

50.             <td><input name="imageField" class="np" type="image" src="images/button_search.gif" width="60" height="22" border="0" /></td>  

51.           </tr>  

52.         </table>  

53.       </form></td>  

54.   </tr>  

55.   <form name='form1' method='post' action='mymessage_main.php' onSubmit='return checkSubmit();'>  

56.     <input type='hidden' name='dopost' value='delall'/>  

57.     <input type='hidden' name='allid' value=''/>  

58.     <tr align="center" bgcolor="#FBFCE2" height="26">  

59.       <td width="40">选择</td>  

60.       <td width="100">留言标题</td>  

61.       <td width="">留言内容</td>  

62.       <td width="100">管理</td>  

63.     </tr>  

64.     {dede:datalist}  

65.     <tr align="center" bgcolor="#FFFFFF" height="26" onMouseMove="javascript:this.bgColor='#FCFDEE';"  

66.              onMouseOut="javascript:this.bgColor='#FFFFFF';">  

67.       <td><input type='checkbox' name='aids' value='{dede:field.id/}' class='np'></td>  

68.       <td><a href="{dede:field.title/}" target='_blank'>{dede:field.title function='htmlspecialchars(@me)'/}</a></td>  

69.       <td><a href="{dede:field.content/}" target='_blank'>{dede:field.content function='htmlspecialchars(@me)'/}</a></td>  

70.       <td><a href='mymessage_main.php?id={dede:field.id/}&dopost=delete'>[删除]</a></td>  

71.     </tr>  

72.     {/dede:datalist}  

73.   </form>  

74.   <tr bgcolor="#ffffff" height="28">  

75.     <td colspan="4">   <a href='#' onclick='Sel("all")' class='np coolbg'>[全选]</a> <a href='#' onclick='Sel("none")' class='np coolbg'>[取消]</a> <a href='#' onclick='checkSubmit()' class='np coolbg'>批量删除</a></td>  

76.   </tr>  

77.   <tr align="center" bgcolor="#F9FCEF" height="28">  

78.     <td colspan="4"> {dede:pagelist listsize=6/} </td>  

79.   </tr>  

80. </table>  

81. </body>  

82. </html>  

4、后台管理留言PHP文件 "/后台管理文件夹/mymessage_main.php"

[php] view plain copy

1. <?php  

2. require_once(dirname(__FILE__).'/config.php');  

3. require_once(DEDEINC.'/datalistcp.class.php');  

4. CheckPurview('plus_用户留言插件');  

5.   

6. if(empty($dopost)) $dopost = "";  

7. if(isset($allid))  

8. {  

9.     $aids = explode(',',$allid);  

10.     if(count($aids)==1)  

11.     {  

12.         $id = $aids[0];  

13.         $dopost = "delete";  

14.     }  

15. }  

16. if($dopost=="delete")  

17. {  

18.     $id = preg_replace("#[^0-9]#"""$id);  

19.     $dsql->ExecuteNoneQuery("DELETE FROM `#@__plus_mymsg` WHERE id='$id'");  

20.     ShowMsg("成功删除一条留言!","mymessage_main.php");  

21.     exit();  

22. }else if($dopost=="delall")  

23. {  

24.     $aids = explode(',',$aids);  

25.     if(isset($aids) && is_array($aids))  

26.     {  

27.         foreach($aids as $aid)  

28.         {  

29.             $aid = preg_replace("#[^0-9]#"""$aid);  

30.             $dsql->ExecuteNoneQuery("DELETE FROM `#@__plus_mymsg` WHERE id='$aid'");  

31.         }  

32.         ShowMsg("成功删除指定留言!","mymessage_main.php");  

33.         exit();  

34.     }  

35.     else  

36.     {  

37.         ShowMsg("你没选定任何留言!","mymessage_main.php");  

38.         exit();  

39.     }  

40. }else{  

41.     if(empty($keyword)) $keyword = '';  

42.     $sql = "SELECT * FROM `#@__plus_mymsg` WHERE  CONCAT(`title`,`content`) LIKE '%$keyword%'";  

43.       

44.     $dlist = new DataListCP();  

45.     $dlist->SetParameter('keyword'$keyword);  

46.     $dlist->SetTemplet(DEDEADMIN.'/templets/mymessage_main.htm');  

47.     $dlist->SetSource($sql);  

48.     $dlist->display();  

49. }  

50. ?>  

5、创建数据表dede_plus_mymsg

[sql] view plain copy

1. DROP TABLE IF EXISTS `dede_plus_mymsg`;  

2. CREATE TABLE `dede_plus_mymsg` (  

3.   `id` int(11) NOT NULL auto_increment,  

4.   `title` varchar(100) NOT NULL,  

5.   `content` text NOT NULL,  

6.   PRIMARY KEY  (`id`)  

7. ) TYPE=MyISAM DEFAULT CHARSET=utf8;  

8. /*需要支持mysql4.0语法,所以使用TYPE=MyISAM*/  

二、模块生成向导

 

 

 

安装程序中的代码为:

[sql] view plain copy

1. DROP TABLE IF EXISTS `dede_plus_mymsg`;  

2. CREATE TABLE `dede_plus_mymsg` (  

3.   `id` int(11) NOT NULL auto_increment,  

4.   `title` varchar(100) NOT NULL,  

5.   `content` text NOT NULL,  

6.   PRIMARY KEY  (`id`)  

7. ) TYPE=MyISAM DEFAULT CHARSET=utf8;  

8. /*需要支持mysql4.0语法,所以使用TYPE=MyISAM*/  

9. Delete From `#@__plus` where plusname like '用户留言插件';  

10. INSERT INTO `#@__plus` (`plusname`, `menustring`, `mainurl`, `writer`, `isshow`, `filelist`) VALUES ('用户留言插件''<m:item name=''用户留言'' link=''mymessage_main.php'' rank=''plus_用户留言'' target=''main'' />''''dustin', 1, '');  


删除程序中的代码为:

[sql] view plain copy

1. DROP TABLE IF EXISTS `dede_plus_mymsg`;  

2.   

3. Delete From `#@__plus` where plusname like '用户留言插件';  


三、第三步,模块管理-安装

安装完成后就可以使用了。

四、安装新插件,可以直接上传XML文件。

 

五、本插件生成的XML模块包,如下:

[html] view plain copy

1. <module>  

2. <baseinfo>  

3. name=用户留言插件  

4. team=dustin  

5. time=2014-11-20  

6. email=self_control@163.com  

7. url=http://blog.csdn.net/dustin_php  

8. hash=c6ac1c9a29c2367b12dca0a9f8f3ba55  

9. indexname=  

10. indexurl=  

11. ismember=0  

12. autosetup=1  

13. autodel=1  

14. lang=utf-8  

15. moduletype=plus  

16. </baseinfo>  

17. <systemfile>  

18. <menustring>  

19.   

20. </menustring>  

21. <readme>  

22. PHAgc3R5bGU9J2xpbmUtaGVpZ2h0OjE1MCUnPjxwPui/meaYr+S4gOS4queUqOaIt+eVmeiogOWwj+aPkuS7tjwvcD48L3A+  

23. </readme>  

24. <setupsql40>  

25. RFJPUCBUQUJMRSBJRiBFWElTVFMgYGRlZGVfcGx1c19teW1zZ2A7DQpDUkVBVEUgVEFCTEUgYGRlZGVfcGx1c19teW1zZ2AgKA0KICBgaWRgIGludCgxMSkgTk9UIE5VTEwgYXV0b19pbmNyZW1lbnQsDQogIGB0aXRsZWAgdmFyY2hhcigxMDApIE5PVCBOVUxMLA0KICBgY29udGVudGAgdGV4dCBOT1QgTlVMTCwNCiAgUFJJTUFSWSBLRVkgIChgaWRgKQ0KKSBUWVBFPU15SVNBTSBERUZBVUxUIENIQVJTRVQ9dXRmODsNCi8q6ZyA6KaB5pSv5oyBbXlzcWw0LjDor63ms5XvvIzmiYDku6Xkvb/nlKhUWVBFPU15SVNBTSovDQpEZWxldGUgRnJvbSBgI0BfX3BsdXNgIHdoZXJlIHBsdXNuYW1lIGxpa2UgJ+eUqOaIt+eVmeiogOaPkuS7tic7DQpJTlNFUlQgSU5UTyBgI0BfX3BsdXNgIChgcGx1c25hbWVgLCBgbWVudXN0cmluZ2AsIGBtYWludXJsYCwgYHdyaXRlcmAsIGBpc3Nob3dgLCBgZmlsZWxpc3RgKSBWQUxVRVMgKCfnlKjmiLfnlZnoqIDmj5Lku7YnLCAnPG06aXRlbSBuYW1lPScn55So5oi355WZ6KiAJycgbGluaz0nJ215bWVzc2FnZV9tYWluLnBocCcnIHJhbms9JydwbHVzX+eUqOaIt+eVmeiogCcnIHRhcmdldD0nJ21haW4nJyAvPicsICcnLCAnZHVzdGluJywgMSwgJycpOw==  

26. </setupsql40>  

27. <delsql>  

28. RFJPUCBUQUJMRSBJRiBFWElTVFMgYGRlZGVfcGx1c19teW1zZ2A7DQoNCkRlbGV0ZSBGcm9tIGAjQF9fcGx1c2Agd2hlcmUgcGx1c25hbWUgbGlrZSAn55So5oi355WZ6KiA5o+S5Lu2Jzs=  

29. </delsql>  

30. <setup>  

31.   

32. </setup>  

33. <uninstall>  

34.   

35. </uninstall>  

36. <oldfilelist>  

37. ../plus/mymessage.php  

38. ../dede/mymessage_main.php  

39. ../dede/templets/mymessage_main.htm  

40. </oldfilelist>  

41. </systemfile>  

42. <modulefiles>  

43. <file type='file' name='../plus/mymessage.php'>  

44. PD9waHANCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4iLy4uL2luY2x1ZGUvY29tbW9uLmluYy5waHAiKTsNCmlmKGVtcHR5KCRkb3Bvc3QpKSAkZG9wb3N0ID0gJyc7DQoNCmlmKCRkb3Bvc3Q9PSdzYXZlJykNCnsNCiAgICAkdmFsaWRhdGUgPSBpc3NldCgkdmFsaWRhdGUpID8gc3RydG9sb3dlcih0cmltKCR2YWxpZGF0ZSkpIDogJyc7DQogICAgJHN2YWxpID0gR2V0Q2tWZFZhbHVlKCk7DQogICAgaWYoJHZhbGlkYXRlPT0nJyB8fCAkdmFsaWRhdGUhPSRzdmFsaSkNCiAgICB7DQogICAgICAgIFNob3dNc2coJ+mqjOivgeeggeS4jeato+ehriEnLCctMScpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KCSR0aXRsZSA9IGh0bWxzcGVjaWFsY2hhcnMoJHRpdGxlKTsNCiAgICAkY29udGVudCA9IGh0bWxzcGVjaWFsY2hhcnMoJGNvbnRlbnQpOw0KCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyBgI0BfX3BsdXNfbXltc2dgKGB0aXRsZWAsYGNvbnRlbnRgKSBWQUxVRVMoJyR0aXRsZScsJyRjb250ZW50JykiOw0KICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCRxdWVyeSk7DQogICAgU2hvd01zZygn55WZ6KiA5oiQ5Yqf77yM5a6h5qC45ZCO5omN6IO95pi+56S6IScsJy0xJywxKTsNCn0NCj8+  

45. </file>  

46. <file type='file' name='../dede/mymessage_main.php'>  

47. PD9waHANCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2NvbmZpZy5waHAnKTsNCnJlcXVpcmVfb25jZShERURFSU5DLicvZGF0YWxpc3RjcC5jbGFzcy5waHAnKTsNCkNoZWNrUHVydmlldygncGx1c1/nlKjmiLfnlZnoqIDmj5Lku7YnKTsNCg0KaWYoZW1wdHkoJGRvcG9zdCkpICRkb3Bvc3QgPSAiIjsNCmlmKGlzc2V0KCRhbGxpZCkpDQp7DQogICAgJGFpZHMgPSBleHBsb2RlKCcsJywkYWxsaWQpOw0KICAgIGlmKGNvdW50KCRhaWRzKT09MSkNCiAgICB7DQogICAgICAgICRpZCA9ICRhaWRzWzBdOw0KICAgICAgICAkZG9wb3N0ID0gImRlbGV0ZSI7DQogICAgfQ0KfQ0KaWYoJGRvcG9zdD09ImRlbGV0ZSIpDQp7DQogICAgJGlkID0gcHJlZ19yZXBsYWNlKCIjW14wLTldIyIsICIiLCAkaWQpOw0KICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCJERUxFVEUgRlJPTSBgI0BfX2RlZGVfcGx1c19teW1zZ2AgV0hFUkUgaWQ9JyRpZCciKTsNCiAgICBTaG93TXNnKCLmiJDlip/liKDpmaTkuIDmnaHnlZnoqIDvvIEiLCJteW1lc3NhZ2VfbWFpbi5waHAiKTsNCiAgICBleGl0KCk7DQp9ZWxzZSBpZigkZG9wb3N0PT0iZGVsYWxsIikNCnsNCiAgICAkYWlkcyA9IGV4cGxvZGUoJywnLCRhaWRzKTsNCiAgICBpZihpc3NldCgkYWlkcykgJiYgaXNfYXJyYXkoJGFpZHMpKQ0KICAgIHsNCiAgICAgICAgZm9yZWFjaCgkYWlkcyBhcyAkYWlkKQ0KICAgICAgICB7DQogICAgICAgICAgICAkYWlkID0gcHJlZ19yZXBsYWNlKCIjW14wLTldIyIsICIiLCAkYWlkKTsNCiAgICAgICAgICAgICRkc3FsLT5FeGVjdXRlTm9uZVF1ZXJ5KCJERUxFVEUgRlJPTSBgI0BfX2RlZGVfcGx1c19teW1zZ2AgV0hFUkUgaWQ9JyRhaWQnIik7DQogICAgICAgIH0NCiAgICAgICAgU2hvd01zZygi5oiQ5Yqf5Yig6Zmk5oyH5a6a55WZ6KiA77yBIiwibXltZXNzYWdlX21haW4ucGhwIik7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgU2hvd01zZygi5L2g5rKh6YCJ5a6a5Lu75L2V55WZ6KiA77yBIiwibXltZXNzYWdlX21haW4ucGhwIik7DQogICAgICAgIGV4aXQoKTsNCiAgICB9DQp9ZWxzZXsNCglpZihlbXB0eSgka2V5d29yZCkpICRrZXl3b3JkID0gJyc7DQoJJHNxbCA9ICJTRUxFQ1QgKiBGUk9NIGAjQF9fcGx1c19teW1zZ2AgV0hFUkUgIENPTkNBVChgdGl0bGVgLGBjb250ZW50YCkgTElLRSAnJSRrZXl3b3JkJSciOw0KCQ0KCSRkbGlzdCA9IG5ldyBEYXRhTGlzdENQKCk7DQoJJGRsaXN0LT5TZXRQYXJhbWV0ZXIoJ2tleXdvcmQnLCAka2V5d29yZCk7DQoJJGRsaXN0LT5TZXRUZW1wbGV0KERFREVBRE1JTi4nL3RlbXBsZXRzL215bWVzc2FnZV9tYWluLmh0bScpOw0KCSRkbGlzdC0+U2V0U291cmNlKCRzcWwpOw0KCSRkbGlzdC0+ZGlzcGxheSgpOw0KfQ0KPz4=  

48. </file>  

49. <file type='file' name='../dede/templets/mymessage_main.htm'>  

50. PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4NCjx0aXRsZT7nlZnoqIDnrqHnkIY8L3RpdGxlPg0KPGxpbmsgaHJlZj0iY3NzL2Jhc2UuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9J3RleHQvY3NzJz4NCjxzY3JpcHQgbGFuZ3VhZ2U9J2phdmFzY3JpcHQnPg0KZnVuY3Rpb24gU2VsKHN0eXBlKQ0Kew0KCSAgZm9yKHZhciBpPTA7aSA8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdhaWRzJykubGVuZ3RoO2krKykNCgkgIHsNCgkJICBpZihzdHlwZT09J2FsbCcpIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdhaWRzJylbaV0uY2hlY2tlZD10cnVlOw0KCQkgIGVsc2UgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2FpZHMnKVtpXS5jaGVja2VkPWZhbHNlOw0KCSAgfQ0KfQ0KZnVuY3Rpb24gY2hlY2tTdWJtaXQoKQ0Kew0KCXZhciBzdHIgPSAnJzsNCglmb3IodmFyIGk9MDtpIDwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2FpZHMnKS5sZW5ndGg7aSsrKQ0KCXsNCgkJICBpZihkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnYWlkcycpW2ldLmNoZWNrZWQpew0KCQkgIAlpZihzdHI9PScnKSBzdHIgKz0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2FpZHMnKVtpXS52YWx1ZTsNCgkJICAJZWxzZSBzdHIgKz0gJywnICsgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2FpZHMnKVtpXS52YWx1ZTsNCgkJICB9DQoJfQ0KCWlmKHN0cj09JycpDQoJew0KCQlhbGVydCgn5L2g5rKh6YCJ5oup5Lu75L2V5YaF5a6577yBJyk7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoJZWxzZQ0KCXsNCgkJbG9jYXRpb249Im15bWVzc2FnZV9tYWluLnBocD9haWRzPSIrc3RyKyImZG9wb3N0PWRlbGFsbCI7DQoJfQ0KfQ0KPC9zY3JpcHQ+DQo8L2hlYWQ+DQoNCjxib2R5IGJhY2tncm91bmQ9J2ltYWdlcy9hbGxiZy5naWYnIGxlZnRtYXJnaW49JzgnIHRvcG1hcmdpbj0nOCc+DQo8dGFibGUgd2lkdGg9Ijk4JSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjEiIGJnY29sb3I9IiNENkQ2RDYiPg0KICA8dHI+DQogICAgPHRkIGhlaWdodD0iMjgiIGJhY2tncm91bmQ9ImltYWdlcy90YmcuZ2lmIiBjb2xzcGFuPSI0IiBzdHlsZT0icGFkZGluZy1sZWZ0OjEwcHg7Ij48ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0Ij4gPGI+55WZ6KiA566h55CGPC9iPiA8L2Rpdj48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIGhlaWdodD0iMzAiIGFsaWduPSJjZW50ZXIiIGJnY29sb3I9IiNGOUZDRUYiICBjb2xzcGFuPSI0Ij48Zm9ybSBhY3Rpb249Im15bWVzc2FnZV9tYWluLnBocCIgbmFtZT0iZm9ybTEiIG1ldGhvZD0iZ2V0Ij4NCiAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIzIj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQ+5YWz6ZSu5a2X77yaPC90ZD4NCiAgICAgICAgICAgIDx0ZD48aW5wdXQgbmFtZT0ia2V5d29yZCIgdHlwZT0idGV4dCIgaWQ9ImtleXdvcmQiIHNpemU9IjEyIiBzdHlsZT0id2lkdGg6MjUwcHgiIHZhbHVlPSI8P3BocCBlY2hvICRrZXl3b3JkOyA/PiIgLz48L3RkPg0KICAgICAgICAgICAgPHRkPjxpbnB1dCBuYW1lPSJpbWFnZUZpZWxkIiBjbGFzcz0ibnAiIHR5cGU9ImltYWdlIiBzcmM9ImltYWdlcy9idXR0b25fc2VhcmNoLmdpZiIgd2lkdGg9IjYwIiBoZWlnaHQ9IjIyIiBib3JkZXI9IjAiIC8+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgPC9mb3JtPjwvdGQ+DQogIDwvdHI+DQogIDxmb3JtIG5hbWU9J2Zvcm0xJyBtZXRob2Q9J3Bvc3QnIGFjdGlvbj0nbXltZXNzYWdlX21haW4ucGhwJyBvblN1Ym1pdD0ncmV0dXJuIGNoZWNrU3VibWl0KCk7Jz4NCiAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkb3Bvc3QnIHZhbHVlPSdkZWxhbGwnLz4NCiAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdhbGxpZCcgdmFsdWU9JycvPg0KICAgIDx0ciBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRkJGQ0UyIiBoZWlnaHQ9IjI2Ij4NCiAgICAgIDx0ZCB3aWR0aD0iNDAiPumAieaLqTwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjEwMCI+55WZ6KiA5qCH6aKYPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iIj7nlZnoqIDlhoXlrrk8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxMDAiPueuoeeQhjwvdGQ+DQogICAgPC90cj4NCiAgICB7ZGVkZTpkYXRhbGlzdH0NCiAgICA8dHIgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZGRkZGRiIgaGVpZ2h0PSIyNiIgb25Nb3VzZU1vdmU9ImphdmFzY3JpcHQ6dGhpcy5iZ0NvbG9yPScjRkNGREVFJzsiDQogICAgICAgIAkgb25Nb3VzZU91dD0iamF2YXNjcmlwdDp0aGlzLmJnQ29sb3I9JyNGRkZGRkYnOyI+DQogICAgICA8dGQ+PGlucHV0IHR5cGU9J2NoZWNrYm94JyBuYW1lPSdhaWRzJyB2YWx1ZT0ne2RlZGU6ZmllbGQuaWQvfScgY2xhc3M9J25wJz48L3RkPg0KICAgICAgPHRkPjxhIGhyZWY9IntkZWRlOmZpZWxkLnRpdGxlL30iIHRhcmdldD0nX2JsYW5rJz57ZGVkZTpmaWVsZC50aXRsZSBmdW5jdGlvbj0naHRtbHNwZWNpYWxjaGFycyhAbWUpJy99PC9hPjwvdGQ+DQogICAgICA8dGQ+PGEgaHJlZj0ie2RlZGU6ZmllbGQuY29udGVudC99IiB0YXJnZXQ9J19ibGFuayc+e2RlZGU6ZmllbGQuY29udGVudCBmdW5jdGlvbj0naHRtbHNwZWNpYWxjaGFycyhAbWUpJy99PC9hPjwvdGQ+DQogICAgICA8dGQ+PGEgaHJlZj0nbXltZXNzYWdlX21haW4ucGhwP2lkPXtkZWRlOmZpZWxkLmlkL30mZG9wb3N0PWRlbGV0ZSc+W+WIoOmZpF08L2E+PC90ZD4NCiAgICA8L3RyPg0KICAgIHsvZGVkZTpkYXRhbGlzdH0NCiAgPC9mb3JtPg0KICA8dHIgYmdjb2xvcj0iI2ZmZmZmZiIgaGVpZ2h0PSIyOCI+DQogICAgPHRkIGNvbHNwYW49IjQiPiDjgIAgPGEgaHJlZj0nIycgb25jbGljaz0nU2VsKCJhbGwiKScgY2xhc3M9J25wIGNvb2xiZyc+W+WFqOmAiV08L2E+IDxhIGhyZWY9JyMnIG9uY2xpY2s9J1NlbCgibm9uZSIpJyBjbGFzcz0nbnAgY29vbGJnJz5b5Y+W5raIXTwvYT4gPGEgaHJlZj0nIycgb25jbGljaz0nY2hlY2tTdWJtaXQoKScgY2xhc3M9J25wIGNvb2xiZyc+5om56YeP5Yig6ZmkPC9hPjwvdGQ+DQogIDwvdHI+DQogIDx0ciBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRjlGQ0VGIiBoZWlnaHQ9IjI4Ij4NCiAgICA8dGQgY29sc3Bhbj0iNCI+IHtkZWRlOnBhZ2VsaXN0IGxpc3RzaXplPTYvfSA8L3RkPg0KICA8L3RyPg0KPC90YWJsZT4NCjwvYm9keT4NCjwvaHRtbD4NCg==  

51. </file>  

52. </modulefiles>  

53. </module>  

 

 

 

 

织梦dedecms插件开发实例-2

模块->模块生成向导

 

 




代码:

INSERT INTO `#@__plus` (`plusname`, `menustring`, `mainurl`, `writer`, `isshow`, `filelist`) VALUES ('文件管理器', '<m:item name=''文件管理器'' link=''file_manage_main.php'' rank=''plus_文件管理器'' target=''main'' />', '', '织梦团队', 1, '');






Delete From `#@__plus` where plusname='文件管理器';