- 【视频教程思路】:如何构思和录制一个清晰易懂的视频教程。
- 【插件制作完整步骤】:手把手教你制作一个简单的“Hello World”插件,涵盖所有核心文件和逻辑。
- 【进阶与扩展】:制作更复杂插件的方向和技巧。
Part 1: 视频教程思路 (如何录制你的教程)
一个好的教程不仅仅是代码的堆砌,更在于引导,以下是视频脚本的结构建议: ** DedeCMS插件开发入门到实战:手把手教你制作你的第一个插件!

视频时长: 15-20分钟
目标观众: DedeCMS用户、有一定PHP基础、想进行二次开发的站长。
脚本大纲
(0:00 - 1:00) 片头 & 介绍
- 欢迎语,自我介绍。
- 演示: 快速展示最终效果(后台管理界面的一个新菜单,点击后显示“Hello World!”)。
- 目的: 勾起观众兴趣,让他们知道看完这个视频能做出什么。
(1:01 - 3:00) 什么是DedeCMS插件?为什么要做插件?

- 解释插件的概念:一个独立的、可插拔的功能模块。
- 讲解优点:不修改核心代码,升级无忧;可复用;方便管理。
- 展示一些优秀的插件案例(如问答、商城、评论等)。
- 目的: 建立理论基础,让观众明白学习价值。
(3:01 - 5:00) 开发环境准备
- 软件准备:
- 本地服务器环境(推荐使用
phpStudy或XAMPP,演示一键安装)。 - 代码编辑器(推荐
VS Code或Sublime Text,演示安装和插件)。 - DedeCMS 程序(演示下载一个最新版本)。
- 本地服务器环境(推荐使用
- 环境搭建:
- 演示将 DedeCMS 解压到
phpStudy的WWW目录。 - 演示通过浏览器访问,完成经典的“5步安装法”。
- 演示将 DedeCMS 解压到
- 软件准备:
- 目的: 确保所有观众都能跟上,这是实操的基础。
(5:01 - 8:00) 插件命名与目录结构
- 命名规则: 插件目录名和文件名建议使用小写字母、下划线,如
hello_world。 - 创建目录: 在
DedeCMS的/plus目录下创建新目录/hello_world。 - 核心文件介绍: 介绍插件必须的几个文件,并解释它们的作用。
hello_world.php(主入口文件)helper.php(辅助函数文件)index.htm(后台管理界面模板)install.php(安装脚本)uninstall.php(卸载脚本)
- 命名规则: 插件目录名和文件名建议使用小写字母、下划线,如
- 目的: 建立清晰的文件结构概念,这是插件开发的骨架。
(8:01 - 15:00) 核心代码编写 - 手把手实战
-
这是视频的核心,需要一步一步演示。
(图片来源网络,侵删)-
编写
install.php(安装脚本):-
演示如何创建数据表(
CREATE TABLE)。 -
演示如何向
#@__plus表中插入插件信息(名称、目录、状态等)。 -
关键代码:
// 在 install.php 中 $dsql->ExecuteNoneQuery("CREATE TABLE `#@__hello_world` ( `id` int(11) NOT NULL auto_increment, `content` varchar(255) NOT NULL, `addtime` int(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"); $inquery = "INSERT INTO `#@__plus` (`plusname`,`plusurl`,`menustring`,`menuislist`,`display`,`writer`,`isshow`,`statu`,`adduser`,`addtime`,`mid`) VALUES ('Hello World','hello_world','Hello World',0,1,'admin',1,1,'admin',".time().",0);"; $dsql->ExecuteNoneQuery($inquery);
-
-
编写
hello_world.php(主入口):- 演示如何接收后台传来的
action参数(如config,main)。 - 演示如何调用
helper.php里的函数。 - 演示如何加载模板文件
index.htm并显示。
- 演示如何接收后台传来的
-
编写
helper.php(辅助函数):- 演示如何封装数据库操作,让主文件更简洁。
- 关键代码:
// 在 helper.php 中 function GetHelloList() { global $dsql; $sql = "SELECT * FROM `#@__hello_world` ORDER BY id DESC"; $dsql->SetQuery($sql); $dsql->Execute(); $dlist = array(); while($arr = $dsql->GetArray()){ $dlist[] = $arr; } return $dlist; }
-
编写
index.htm(后台模板):- 演示如何使用 DedeCMS 的模板引擎
{dede:...}- 演示如何循环输出数据。
- 关键代码:
<!-- 在 index.htm 中 --> <table width="100%" border="0" cellpadding="1" cellspacing="1" bgcolor="#CBD8AC" style="margin-top:8px;"> <tr bgcolor="#E7F4D6"> <td height="28" colspan="2" background='img/wbg.gif'><strong>Hello World 列表</strong></td> </tr> <tr align="center" bgcolor="#FFFFFF" height="26"> <td width="26%">ID</td> <td width="74%">内容</td> </tr> {dede:sql sql='SELECT * FROM `#@__hello_world` ORDER BY id DESC'} <tr align="center" bgcolor="#FFFFFF" height="26"> <td>[field:id/]</td> <td>[field:content/]</td> </tr> {/dede:sql} </table>
- 演示如何使用 DedeCMS 的模板引擎
-
-
目的: 通过实例,让观众完整理解插件从安装到运行的流程。
(15:01 - 17:00) 安装、激活与测试
- 演示如何登录 DedeCMS 后台。
- 演示进入“插件管理” -> “插件列表”,找到并安装我们制作的插件。
- 演示如何启用插件。
- 演示如何进入插件的管理界面,查看效果。
- 目的: 验证开发成果,给予观众成就感。
(17:01 - 18:00) 卸载与总结
- 演示如何通过后台卸载插件,并说明卸载脚本的作用(删除数据表、删除记录)。
- 关键代码 (
uninstall.php):// 在 uninstall.php 中 $dsql->ExecuteNoneQuery("DROP TABLE IF EXISTS `#@__hello_world`;"); $dsql->ExecuteNoneQuery("DELETE FROM `#@__plus` WHERE plusdir='hello_world';"); - 回顾插件开发的核心要素(目录结构、安装/卸载脚本、主入口、辅助函数、模板)。
- 预告: 鼓励观众动手实践,并预告下一期更复杂的插件教程(如增加表单提交、数据管理等)。
(18:00 - 18:30) 片尾
- 感谢观看,引导点赞、评论、关注。
Part 2: 插件制作完整步骤 (图文版)
我们以制作一个名为“Hello World”的插件为例,它会在后台生成一个管理菜单,并显示一个数据列表。
第一步:创建插件目录和文件
在你的 DedeCMS 根目录下,找到 /plus 文件夹,在里面创建一个新文件夹,命名为 helloworld。
在 /plus/helloworld 目录下,创建以下5个空文件:
helloworld.phphelper.phpindex.htminstall.phpuninstall.php
第二步:编写安装脚本 install.php
这个文件在后台安装插件时被调用。
<?php
/**
* DedeCMS Hello World 插件安装脚本
*/
require_once(dirname(__FILE__)."/../include/config_base.php");
require_once(DEDEINC."/dedesql.class.php");
$dsql = new DedeSql(false);
// 创建数据表
$table = `#@__helloworld`; // DedeCMS 会自动替换 `#@__` 为你数据库的前缀
$createTableSql = "CREATE TABLE IF NOT EXISTS `$table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`content` varchar(255) NOT NULL,
`addtime` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";
$dsql->ExecuteNoneQuery($createTableSql);
// 向插件管理表里插入记录
$inquery = "INSERT INTO `#@__plus` (`plusname`, `plusurl`, `menustring`, `menuislist`, `display`, `writer`, `isshow`, `statu`, `adduser`, `addtime`, `mid`) VALUES
('Hello World', 'helloworld', 'Hello World', 0, 1, 'admin', 1, 1, 'admin', ".time().", 0);";
$dsql->ExecuteNoneQuery($inquery);
if($dsql->GetErrorNum() == 0){
echo "插件安装成功!";
}else{
echo "插件安装失败!".$dsql->GetError();
}
$dsql->Close();
?>
第三步:编写辅助函数 helper.php
我们把数据库操作等通用函数放在这里,让主文件更干净。
<?php
/**
* DedeCMS Hello World 插件辅助函数
*/
// 获取所有Hello World记录
function GetHelloList() {
global $dsql;
$sql = "SELECT * FROM `#@__helloworld` ORDER BY id DESC";
$dsql->SetQuery($sql);
$dsql->Execute();
$dlist = array();
while($arr = $dsql->GetArray()){
$dlist[] = $arr;
}
return $dlist;
}
// 添加一条记录
function AddHello($content) {
global $dsql;
$sql = "INSERT INTO `#@__helloworld` (`content`, `addtime`) VALUES ('".$dsql->EscapeString($content)."', ".time().");";
$dsql->ExecuteNoneQuery($sql);
return $dsql->GetLastID();
}
?>
第四步:编写后台管理界面模板 index.htm
这是后台看到的HTML界面。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />Hello World 插件管理</title>
<link href="img/base.css" rel="stylesheet" type="text/css" />
<link href="img/style.css" rel="stylesheet" type="text/css" />
<script language="javascript" src="img/js/jquery.js"></script>
</head>
<body background='img/allbg.gif' leftmargin='8' topmargin='8'>
<table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center">
<tr>
<td height="28" colspan="2" background='img/wbg.gif'><strong>Hello World 插件管理</strong></td>
</tr>
<tr>
<td height="50" colspan="2" align="center">
<form action="helloworld.php" method="post">
<input type="hidden" name="action" value="add" />
<input type="text" name="content" size="50" />
<input type="submit" value="添加一条新记录" />
</form>
</td>
</tr>
<tr>
<td height="28" colspan="2" background='img/wbg.gif'><strong>记录列表</strong></td>
</tr>
<tr align="center" bgcolor="#E7F4D6" height="24">
<td width="26%">ID</td>
<td width="74%">内容</td>
</tr>
<!-- 使用Dede的SQL标签直接查询并显示数据 -->
{dede:sql sql='SELECT * FROM `#@__helloworld` ORDER BY id DESC'}
<tr align="center" bgcolor="#FFFFFF" height="26">
<td>[field:id/]</td>
<td>[field:content/]</td>
</tr>
{/dede:sql}
</table>
</body>
</html>
第五步:编写主入口文件 helloworld.php
这是插件的核心,负责处理请求和显示页面。
<?php
/**
* DedeCMS Hello World 插件主入口
*/
require_once(dirname(__FILE__)."/../include/config_global.php");
require_once(DEDEINC."/dedesql.class.php");
require_once(dirname(__FILE__)."/helper.php");
// 引入后台管理框架
require_once(DEDEINC."/datalistcp.class.php");
$action = isset($action) ? $action : 'main';
// 处理添加记录的请求
if($action == 'add' && isset($content) && !empty($content)){
AddHello($content);
ShowMsg("添加成功!", "helloworld.php");
exit();
}
// 显示主界面(默认)
if($action == 'main'){
// 可以在这里加载模板,或者直接跳转到列表页
include(dirname(__FILE__)."/index.htm");
}
?>
第六步:编写卸载脚本 uninstall.php
<?php
/**
* DedeCMS Hello World 插件卸载脚本
*/
require_once(dirname(__FILE__)."/../include/config_base.php");
require_once(DEDEINC."/dedesql.class.php");
$dsql = new DedeSql(false);
// 删除数据表
$dsql->ExecuteNoneQuery("DROP TABLE IF EXISTS `#@__helloworld`;");
// 从插件管理表中删除记录
$dsql->ExecuteNoneQuery("DELETE FROM `#@__plus` WHERE plusdir='helloworld';");
if($dsql->GetErrorNum() == 0){
echo "插件卸载成功!数据表和记录已清除。";
}else{
echo "插件卸载失败!".$dsql->GetError();
}
$dsql->Close();
?>
第七步:安装与测试
- 登录你的 DedeCMS 后台。
- 在左侧菜单找到 【系统】 -> 【插件管理】 -> 【插件列表】。
- 点击右上角的 【上传新插件】 或 【安装插件】。
- 在弹出的页面中,选择“本地安装”,然后选择我们刚才创建的
/plus/helloworld文件夹进行安装。 - 安装成功后,你会在插件列表中看到“Hello World”插件,点击“启用”。
- 在左侧菜单的 【系统】 -> 【插件管理】 -> 【已启用的插件】 中,找到“Hello World”,点击“管理”。
- 你就能看到我们制作的插件管理界面了!
Part 3: 进阶与扩展
当你掌握了基础后,可以尝试开发更复杂的插件:
-
增加前台调用标签:
- 创建一个
tag/helloworld.lib.php文件。 - 在文件中定义一个函数,如
function helloWorld($attr, $content)。 - 在函数里解析标签属性,查询数据库,并返回HTML代码。
- 这样,你就可以在前台模板中使用
{dede:helloWorld/}这样的标签了。
- 创建一个
-
增加表单提交和数据管理:
- 在
index.htm中增加一个表单,用于添加新数据(如标题、内容)。 - 在
helloworld.php中增加对action=add的判断,调用helper.php中的添加函数。 - 增加编辑和删除功能,需要为每条记录增加操作链接,并在
helloworld.php中处理相应的请求。
- 在
-
与会员系统集成:
让插件只对特定会员等级开放,或者记录操作者是谁。
-
使用AJAX:
对于删除、点赞等即时操作,使用AJAX可以无需刷新页面,提升用户体验。
希望这份详尽的教程能帮助你成功迈出 DedeCMS 插件开发的第一步!祝你开发顺利!
