找回密码
 立即注册
搜索
查看: 2130|回复: 0

【discuz 插件教程】插件嵌入点与插件模板②

[复制链接]

581

主题

110

回帖

4066

积分

管理员

积分
4066

众神之神

发表于 2014-11-4 23:20:43 | 显示全部楼层 |阅读模式
公共嵌入点使用
方法名:common()
声明位置:公共嵌入点类
调用位置:所有嵌入点之前
参数使用:无

信息提示嵌入点使用
方法名:模块名_任意名称_message()
声明位置:脚本嵌入点类(普通嵌入点类)
调用位置:当前脚本提示用户信息时
参数使用:方法参数

广告嵌入点使用
方法名:ad_广告嵌入点名称()
声明位置:全局嵌入点类,脚本嵌入点类
调用位置:对应的广告位
参数使用:方法参数

文本解析嵌入点使用
方法名:discuzcode()
声明位置:全局嵌入点类
调用位置:主题文本解析时
参数使用:$_G['discuzcodemessage'],方法参数

主题删除嵌入点使用
方法名:deletethread()
声明位置:全局嵌入点类
调用位置:主题被删除前,后时
参数使用:$_G['deletethreadtids'],方法参数

头像显示嵌入点使用
方法名:avatar()
声明位置:全局嵌入点类
调用位置:头像显示时
参数使用:$_G['hookavatar'],方法参数

注:$_G为全局数组,使用时应先声明
例子:
  1. function common(){
  2. global $_G;
  3. $_G['php4'] = 'php4中文网';
  4. }
复制代码
在定义类和方法的时候:
1:方法存在与类中
2:全局嵌入点方法写在全局嵌入点类中
      普通嵌入点方法写在普通嵌入点类中
     普通嵌入点类要继承全局嵌入点类
3:嵌入点方法名定义与入口名有关系
      嵌入点类名与模块名有关系


代码例子:
  1. <?php
  2. /*全局嵌入点类 class plugin_插件标识符{}*/
  3. class plugin_thi_kf{
  4.         /*
  5.         公共嵌入点使用
  6.         方法名:common()
  7.         声明位置:公共嵌入点类
  8.         调用位置:所有嵌入点之前
  9.         */
  10.         function common() {
  11.                 global $_G;
  12.                 $_G['thirteen'] = 'test_common';
  13.         }
  14.         /*
  15.         广告嵌入点
  16.         需要关闭调试模式
  17.         广告嵌入点使用
  18.         方法名:ad_广告嵌入点名称()
  19.         声明位置:全局嵌入点类,脚本嵌入点类
  20.         调用位置:对应的广告位
  21.         参数使用:方法参数
  22.         */
  23.         function ad_headerbanner() {
  24.                 return '<a href="http://www.baidu.com">Baidu<a/>';
  25.         }
  26.         /*
  27.         文本解析嵌入点,修改呈现给用户的主题信息,作用与主题帖子和回复
  28.         文本解析嵌入点使用
  29.         方法名:discuzcode()
  30.         声明位置:全局嵌入点类
  31.         调用位置:主题文本解析时
  32.         参数使用:$_G['discuzcodemessage'],方法参数
  33.         */
  34.         function discuzcode() {
  35.                 global $_G;
  36.                 $_G['discuzcodemessage'] .= '——PHP中文网出品';
  37.         }
  38.         /*
  39.         主题删除嵌入点使用
  40.         用于在主题删除前后嵌入自己的功能,此函数将在 deletethread() 中被调用 2 次,函数中 $_G['deletethreadtids'] 变量为待处理的 TID 数组
  41.         方法名:deletethread()
  42.         声明位置:全局嵌入点类
  43.         调用位置:主题被删除前,后时
  44.         参数使用:$_G['deletethreadtids'],方法参数
  45.         */
  46.         function deletethread($p) {
  47.                 //$p 是一个数组,可以打印一下
  48.                 global $_G;
  49.                 $_G['deletethreadtids'] = '<img src ="http://www.php4.cn/images/link.jpg?'.$p['param'][0].'">';

  50.         }
  51.         /*
  52.         头像显示嵌入点使用
  53.         方法名:avatar()
  54.         声明位置:全局嵌入点类
  55.         调用位置:头像显示时
  56.         参数使用:$_G['hookavatar'],方法参数
  57.         */
  58.         function avatar() {
  59.                 global $_G;
  60.                 $_G['hookavatar']
  61.         }
  62.         /*全局嵌入点方法 function global_任意(){}*/
  63.         function global_cpnav_extral1() {
  64.                 /*include template(插件标识符:模板目录名称/模板名称)*/
  65.                 include template('thi_kf:forum/thiteen')
  66.         }
  67. }

  68. /*普通嵌入点类 class plugin_插件标识符_入口文件名 extends 全局页面嵌入点类{}*/
  69. class plugin_thi_kf_forum extends plugin_thi_kf {
  70.         /*
  71.         信息提示嵌入点
  72.         方法名:模块名_任意名称_message()
  73.         message嵌入点,由showmessage(提示信息,跳转地址)函数触发。
  74.         如,在forum中定义showmessage()函数,在论坛首页使用信息提示嵌入点就可以写为function index_test_message() {}
  75.         使用信息提示嵌入点必须要先在入口文件里开启(声明)信息提示嵌入点;如在forum.php中加一句代码: showmessage('testtest');
  76.         */
  77.         function index_test_message($p) {
  78.                 debug($p);//discuz 内置调试方法 debug();可以打印一下$p;结果是一个数组
  79.                 echo $p['param'][0]; exit;
  80.         }
  81.         /*普通嵌入点方法 function 模块名_任意(){}*/
  82.         function index_status_extra() {
  83.                 global $_G;
  84.                 return $_G['thirteen'].'你好,十三';
  85.         }
  86.         /*输出前置页面嵌入点方法 function 模块名_任意_output(){}*/
  87.         function index_thirteen_output() {
  88.                 global $_G;
  89.                 $_G['member']['username'] = 'hehe';
  90.         }
  91. }
  92. ?>
复制代码


截图说明:站位
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|十三博客 ( 鲁ICP备2023000528号 )

GMT+8, 2026-6-1 17:26 , Processed in 0.049253 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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