Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[发布] [手把手教]discuzX2插件制作教程__最菜鸟级别的入门坎

  [复制链接]
绝世十二少 发表于 2011-10-16 00:29:25 | 显示全部楼层 |阅读模式
本帖最后由 绝世十二少 于 2014-5-1 20:44 编辑

可以到百度文库下载PDF教程,这样可以方便各位携带,随带随学哈!
下载链接:http://wenku.baidu.com/view/b7cf3e06fad6195f312ba656.html

         终于也轮到我写教程指导后人了,在此感谢会员(sw08)的热心指导,同时也感谢曾经提供各种插件资料给我的论坛朋友们,是你们帮我跨过了插件的入门坎,也让我对插件有一点点认识,在此感谢各位!

开源PHP技术交流群(79131196)即将满员(目前有900多群友)
开源PHP技术交流群②( 106563989 )
全心全意为大家提供一个互相交流的平台!技术不分界线,欢迎全国各省朋友们加入。。。

         想想这几天为了自己网站的需求而不得不踏入插件制作的圈子,很多时候别人开发的插件往往不能满足自己的需求,可自己又不会这方面的知识,网站无法达到预想的效果,心里总有万分的无奈,无从下手。我作为一个菜鸟站长或PHP程序员来说,东西如果不能达到我想要得效果,我会想尽办法去解决,不然心里一直不爽!相信大家也会像我这样,现在就让我这个菜鸟来教你们开发处女作吧!

       有钱给钱,有力给力,别光看不回帖,这样不给力噢

       一、开发插件所需资料与工具
         1、DiscuzX2 插件机制   http://dev.discuz.org/wiki/#.E6.8F.92.E4.BB.B6.E6.9C.BA.E5.88.B6
         2、语言包编码转换工具 convertz  【百度一下】(专门用来处理多种编码的插件安装 )
         3、数据库管理工具 navicat   【百度一下】(方便数据库的查看与操作)
         4、网站的基本数据,这些数据包括:系统常量、全局变量、系统调用 ,首先从系统常量说起
            4.1、系统常量
                  DISCUZ_ROOT     //网站根目录
                  TIMESTAMP          //程序执行的时间戳
                  CHARSET             //程序的语言编码类型
                  IS_ROBOT           //是否是机器访问
                  FORMHASH          //HASH值
                  其余的可直接打印出来查看,如:
  1. <?php
  2. require_once './source/class/class_core.php';
  3. $discuz = & discuz_core::instance();
  4. $discuz->init();
  5. print_r(get_defined_constants());
  6. ?>
复制代码
4.2、全局变量
                 直接打印$_G即可得知,如:
  1. <?php
  2. require_once './source/class/class_core.php';
  3. $discuz = & discuz_core::instance();
  4. $discuz->init();
  5. print_r($_G);
  6. ?>
复制代码
4.3、数据库配置参数
                  直接打印$_G['config']['db']即可,如:
  1. <?php
  2. require_once './source/class/class_core.php';
  3. $discuz = & discuz_core::instance();
  4. $discuz->init();
  5. print_r($_G['config']['db']);
  6. ?>
复制代码
4.4、数据库操作
                  DB::table()           //增加了pre的数据库表名
                  DB::delete()           //删除表中数据
                  DB::insert()           //向表中插入数据
                  DB::update()           //更新表中数据
                  DB::fetch()           //配合DB::query来实现数据资源数据的获取
                  DB::query()           //执行一条数据库语句
                  DB::fetch_first()  //获取结果集的第一条记录

                  更多操作请查看文档:http://dev.discuz.org/wiki/index.php?title=Discuz%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B1%BB

         5、熟悉 ./source/function/function_admincp.php 管理后台文件里的函数,知道具体函数是实现什么功能效果
         6、了解和掌握基础通用的类、函数  http://dev.discuz.org/wiki/#.E5.9F.BA.E7.A1.80.E6.A1.86.E6.9E.B6.E3.80.81.E7.B1.BB.E3.80.81.E5.87.BD.E6.95.B0

      、安全性处理
          1、文件的安全性
             所有与插件有关的程序,包括全部的前后台程序,因全部使用外壳调用,请务必在第一行加入
              if(!defined('IN_DISCUZ')) {
                        exit('Access Denied');
               }
             以免其被 URL 直接请求调用,产生安全问题。

          2、对数值处理
             2.1、 intval();    //处理非负整数 ,如:$uid=intval($uid);
               注意,使用intval后,一定要想一想,自己这个变量是不是应该非负的?如果是的话,得加个判断语句,或者用abs,max等函数处理下
             2.2、 trim();      //去除左右空格, 如:$username=trim($username);
             2.3、 对于文字内容,记得使用htmlspecialchars(dhtmlspecialchars)
             2.4、 写入数据库时的注意事项
                   要进数据库的变量一定得addslashes(DZ内为daddslashes,如用DZ无须再次过滤,DZ已将所有$_POST和$_GET过滤),当然,如果你进的是数字(比如uid,并且已经intval过),或者是其他一些肯定不会出错的,那么你可以不做这一步。
             2.5、 在写sql语句时,变量一定得记得用’框起来。如果变量是字符串,不这么做会出错。如果是数字不这么做不会提示出错,但是有可能有注入的危险。
             2.6、 数组在运用前记得写$xxx = array();  原因很简单,防止用户提交恶意的值。

          3、语句查询优化
              在写SQL语句是尽量符合SQL规则,语句查询要相应的优化,有先有后;数据表要相应的创建索引,加快查询速度,这里不多说。

       三、实例讲解之插件的前兆
           1、最先清楚需要开发什么功能的插件,插件机制是否能够开发,最后能否达到预期效果,否则一切都免谈了
           2、需要使用什么菜单、什么参数,配置哪些选项、数据结构如何设计、前后台实现哪些功能等等
           3、需要哪些函数,discuz内部是否有这功能的函数,尽量用内部的函数来达到预期效果
           4、最好不要改动discuz原有的布局,宁愿Coty一段代码出来也不要在原有的函数上添加功能,防止以后的升级问题
           5、尽最大能力去开发智能的插件,多用变量代替常量,增强程序的移植性,可维护性

      、实例讲解之基本配置
           1、安装全新的DiscuzX2
           2、打开 config/config_global.php 文件,在文件结尾添加以下代码开启插件设计者模式
  1. $_config['plugindeveloper'] = 2;   // 1 表示开启插件设计者模式 ; 2 表示开启插件设计者模式且显示前台页面的潜入点
复制代码

           3、更新缓存(为了显示潜入点),刷新前台页面看看就知道什么叫嵌入点了,有嵌入点得地方就可以顺便输出内容,包括源码
               

      、实例讲解之管理中心
            1、这里以“会员注册后自动送100个金币”为例 (主要传授对数据库的操作)
            2、填写插件最基本信息

               
                         (注意:提交完后记得在插件目录下建以标识符为名的文件夹,如: ./source/plugin/send_jinbi)



            3、选择插件语言包
              

                     
               

            4、添加插件变量配置
               
                 具体可以点最后面的"详细"进入编辑


            5、在插件列表中找到"新注册会员送100个金币"插件并启用
               


听客们!{:soso_e102:}二楼有美女,机不可失,时不再来






评分

14

查看全部评分

 楼主| 绝世十二少 发表于 2011-10-16 00:29:26 | 显示全部楼层
本帖最后由 绝世十二少 于 2013-7-10 08:43 编辑

       八、实例讲解之插件语言包
           1、打开之前所创建的语言包文件(data/plugindata/send_jinbi.lang.php),添加以下代码,红色部分为插件的唯一标识符:
<?php
//程序脚本文件的语言包
$scriptlang['send_jinbi'] = array(
     'info' => '程序脚本文件的语言包'
);

//模版文件的语言包
$templatelang['send_jinbi'] = array(
     'info' => '模板文件的语言包'
);

//安装、升级、卸载脚本用的语言包
$installlang['send_jinbi'] = array(
     'info' => '安装、升级、卸载脚本用的语言包'
);
?>

2、调用语言包
                模版中调用模板文件语言包,通过 {lang send_jinbi:info} 方式调用。
                程序脚本中调用脚本文件语言包,通过 lang('plugin/send_jinbi', 'info') 方式调用。
                安装脚本中调用安装脚本文件语言包,通过 $installlang 变量直接获取。如 $installlang['info']。

          3、语言包的导出
               
               导出后的语言包是:discuz_plugin_send_jinbi.xml
               接下来我们用编码转换工具 convertz  对discuz_plugin_send_jinbi.xml 分别转为:
               discuz_plugin_send_jinbi_SC_GBK.xml(简体中文GBK)
               discuz_plugin_send_jinbi_SC_UTF8.xml(简体中文UTF8)
               discuz_plugin_send_jinbi_TC_BIG5.xml(繁体中文BIG5)
               discuz_plugin_send_jinbi_TC_UTF8.xml(繁体中文UTF8)
               把这四个文件放到该插件 ./source/plugin/send_jinbi/  目录下

           4、安装时的效果图:
               

       九、实例讲解之增加页面功能           

           1、在原有的页面上添加功能(这里以 注册 页面为例)
               

           2、在之前那个 ./source/plugin/send_jinbi/send_jinbi.class.php 的最后添加以下代码:
class plugin_send_jinbi_member extends plugin_send_jinbi {//类名称plugin_send_jinbi_member 最后面的 member 应该是相应的模块名称吧!具体本人不怎么清楚,还望高人指点!总之它是会改变的,如果是论坛,则是 forum
        function register_input() {  //函数名称其实就是前台页面嵌入点的名称
                $lang = lang('plugin/send_jinbi');  //获取此插件的语言包
                $bind = "<a href='javascript:void(0);' onClick=\"alert('别点我');\">".$lang['info']."</a>";  //调用语言包显示
                return $bind;
        }
}
           3、更新下缓存,再到前台注册页面看看效果
              



          PS:写到这里,相信大家对插件基本上是有一点了解了吧!这几天来忙着工作大概就了解到这些知识,有了它们,我想要得网站效果都统统实现了,相信你们也会一样开发出自己心中的插件,只要你肯学,没有什么学不会;不说了,花了半天的时间写这篇教程,同时也巩固了自己的插件知识,朋友们!晚安!


           PHP技术交流群(79131196),全心全意为大家提供一个互相交流的平台!技术不分界线,欢迎朋友们加入。。。
        

          附加:[手把手教]【整理一些站长们最常用最实用的discuz功能】【已更新】
                     原帖地址:https://discuz.dismall.com/thread-2434169-1-1.html

                     [手把手教]【整理一些discuz插件开发制作入门级教程】
                     原帖地址:https://discuz.dismall.com/thread-2438054-1-1.html
                                                                                                                              日期:2011-10-16  00:30      
                                                                                                                              笔者:绝世十二少   
                                                                                                                             http://www.2bccc.com   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

1

查看全部评分

回复

使用道具 举报

 楼主| 绝世十二少 发表于 2011-10-16 00:29:27 | 显示全部楼层
本帖最后由 绝世十二少 于 2013-7-10 08:52 编辑

格式乱了,没法整理
回复

使用道具 举报

 楼主| 绝世十二少 发表于 2011-10-16 00:30:18 | 显示全部楼层
本帖最后由 绝世十二少 于 2013-8-1 18:32 编辑

类似淘宝客的衣联联盟,注册就送500元现金,刚诞生,规则比淘宝客或京东联盟宽很多,佣金高,这是做批发的网站,一个订单的金额比零售的高,佣金是订单金额的6%~10%,淘宝联盟现在竞争大不好做,可以做新的联盟,据说是刚上线,竞争人少,貌似前期推广不限制邮箱和QQ群,后期应该会限制。

规则:只要有个人网站且备案的,就可以通过



衣联联盟:http://cps.eelly.com/user/recommend?ref=EL0738



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

w85378431 发表于 2011-10-16 00:46:27 | 显示全部楼层
支持下阿飘
http://bbs.52cnw.com
回复

使用道具 举报

[游民部落] 发表于 2011-10-16 00:58:37 | 显示全部楼层
{:soso_e179:} 好帖
回复

使用道具 举报

lingcj 发表于 2011-10-16 01:19:38 | 显示全部楼层
顶了,这种贴越来越少了
回复

使用道具 举报

 楼主| 绝世十二少 发表于 2011-10-16 07:54:17 | 显示全部楼层
一觉醒来真爽,人呢!写篇教程不容易啊!太不给力了吧
回复

使用道具 举报

我是潇洒哥 发表于 2011-10-16 07:56:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

mayiwo 发表于 2011-10-16 08:16:17 | 显示全部楼层
不錯的教學,待續
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-28 18:09 , Processed in 0.038223 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表