1. 【视频教程思路】:如何构思和录制一个清晰易懂的视频教程。
  2. 【插件制作完整步骤】:手把手教你制作一个简单的“Hello World”插件,涵盖所有核心文件和逻辑。
  3. 【进阶与扩展】:制作更复杂插件的方向和技巧。

Part 1: 视频教程思路 (如何录制你的教程)

一个好的教程不仅仅是代码的堆砌,更在于引导,以下是视频脚本的结构建议: ** DedeCMS插件开发入门到实战:手把手教你制作你的第一个插件!

dede cms插件制作视频教程
(图片来源网络,侵删)

视频时长: 15-20分钟

目标观众: DedeCMS用户、有一定PHP基础、想进行二次开发的站长。


脚本大纲

(0:00 - 1:00) 片头 & 介绍

  • 欢迎语,自我介绍。
  • 演示: 快速展示最终效果(后台管理界面的一个新菜单,点击后显示“Hello World!”)。
  • 目的: 勾起观众兴趣,让他们知道看完这个视频能做出什么。

(1:01 - 3:00) 什么是DedeCMS插件?为什么要做插件?

dede cms插件制作视频教程
(图片来源网络,侵删)
    • 解释插件的概念:一个独立的、可插拔的功能模块。
    • 讲解优点:不修改核心代码,升级无忧;可复用;方便管理。
    • 展示一些优秀的插件案例(如问答、商城、评论等)。
  • 目的: 建立理论基础,让观众明白学习价值。

(3:01 - 5:00) 开发环境准备

    • 软件准备:
      • 本地服务器环境(推荐使用 phpStudyXAMPP,演示一键安装)。
      • 代码编辑器(推荐 VS CodeSublime Text,演示安装和插件)。
      • DedeCMS 程序(演示下载一个最新版本)。
    • 环境搭建:
      • 演示将 DedeCMS 解压到 phpStudyWWW 目录。
      • 演示通过浏览器访问,完成经典的“5步安装法”。
  • 目的: 确保所有观众都能跟上,这是实操的基础。

(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) 核心代码编写 - 手把手实战

  • 这是视频的核心,需要一步一步演示。

    dede cms插件制作视频教程
    (图片来源网络,侵删)
    • 编写 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>
  • 目的: 通过实例,让观众完整理解插件从安装到运行的流程。

(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.php
  • helper.php
  • index.htm
  • install.php
  • uninstall.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();
?>

第七步:安装与测试

  1. 登录你的 DedeCMS 后台。
  2. 在左侧菜单找到 【系统】 -> 【插件管理】 -> 【插件列表】
  3. 点击右上角的 【上传新插件】【安装插件】
  4. 在弹出的页面中,选择“本地安装”,然后选择我们刚才创建的 /plus/helloworld 文件夹进行安装。
  5. 安装成功后,你会在插件列表中看到“Hello World”插件,点击“启用”。
  6. 在左侧菜单的 【系统】 -> 【插件管理】 -> 【已启用的插件】 中,找到“Hello World”,点击“管理”。
  7. 你就能看到我们制作的插件管理界面了!

Part 3: 进阶与扩展

当你掌握了基础后,可以尝试开发更复杂的插件:

  1. 增加前台调用标签:

    • 创建一个 tag/helloworld.lib.php 文件。
    • 在文件中定义一个函数,如 function helloWorld($attr, $content)
    • 在函数里解析标签属性,查询数据库,并返回HTML代码。
    • 这样,你就可以在前台模板中使用 {dede:helloWorld/} 这样的标签了。
  2. 增加表单提交和数据管理:

    • index.htm 中增加一个表单,用于添加新数据(如标题、内容)。
    • helloworld.php 中增加对 action=add 的判断,调用 helper.php 中的添加函数。
    • 增加编辑和删除功能,需要为每条记录增加操作链接,并在 helloworld.php 中处理相应的请求。
  3. 与会员系统集成:

    让插件只对特定会员等级开放,或者记录操作者是谁。

  4. 使用AJAX:

    对于删除、点赞等即时操作,使用AJAX可以无需刷新页面,提升用户体验。

希望这份详尽的教程能帮助你成功迈出 DedeCMS 插件开发的第一步!祝你开发顺利!