Bacysoft.cn

 找回密码
 邀请注册
查看: 13971|回复: 2
打印 上一主题 下一主题

1.1 准备工作

[复制链接]
跳转到指定楼层
楼主
发表于 2014-5-15 00:03:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bacy001 于 2014-5-15 00:12 编辑


1.1.1、开启插件设计模式

在 Discuz!X 根目录下找到文件 config/config_global.php,在文件的最后添加如下代码:
  1. $_config['plugindeveloper'] = 1;
复制代码
保存文件后进入系统后台,在“应用 - 插件”页面下将可以看到“设计新插件”,如下图:


沙发
 楼主| 发表于 2014-5-15 00:14:57 | 只看该作者
本帖最后由 bacy001 于 2014-5-15 00:16 编辑

1.1.2、设置插件基本信息
在“应用 - 插件”页面下点击“设计新插件”,并根据提示输入相关插件信息。如下图:

提交后,将进入详细设置,可以根据需要在“插件描述”中输入相关内容,如果需要开发支持多种语言的插件(如中文各种编码、各种外文等)建议开启插件语言包。如下图:


1.1.2.1 创建插件目录
插件必须统一存放在系统的插件目录下面,即:source\plugin\
通常插件目录与插件ID一致,本例中为:bacy_gmt
创建完成后的插件目录为:source\plugin\bacy_gmt\
后续插件开发将在此目录下添加相关文件。

1.1.2.2 创建语言包文件
在 data\plugindata 目录下创建语言包临时文件:bacy_gmt.lang.php
这个临时文件仅在插件开发阶段有效,这也是唯一一个不在插件目录下的文件,后期将通过“应用 - 插件”菜单中的“导出”功能将此文件转换为对应的 xml 文档用于插件的发布。
打开语言包文件,并输入以下内容:
  1. <?php
  2. $templatelang['bacy_gmt'] = array(
  3.         'sysname' => '世界时钟',
  4. );

  5. $scriptlang['bacy_gmt'] = array(
  6.         'sysname' => '世界时钟',
  7. );
  8. ?>
复制代码
可以看到,语言包的原理其实就是通过在插件模板或者代码中调用对应的字段的值来实现的。
$templatelang 为模版文件的语言包,通过 {lang bacy_gmt:english} 方式调用。
$scriptlang 为程序脚本文件的语言包,通过 lang('plugin/bacy_gmt', 'sysname') 方式调用。
关于语言包更详细的内容请读者参考官方的技术文档:插件语言包
板凳
 楼主| 发表于 2014-5-15 00:17:26 | 只看该作者

1.1.3 模块设置
为了能在“顶部导航”的位置显示我们的时钟,必须用到 Discuz!X 插件机制中的页面嵌入技术,或者说钩子技术。要使用页面嵌入功能,必须先在模块中添加一个页面嵌入模块,如下图:

程序模块的名字可以根据需要自行设定,提交以后在插件目录下创建 gmt.class.php 文件,并输入以下内容:
  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3.         exit('Access Denied');
  4. }

  5. class plugin_bacy_gmt {

  6.         function global_cpnav_extra1() {
  7.         }
  8. }
  9. ?>
复制代码
这是页面嵌入模块的标准写法,代码开始部分主要是为了防止非法调用(几乎在所有 Discuz!X 的 PHP 文档开通都有),接着定义了一个全局嵌入点类,此类包含一个成员函数,函数名则是 Discuz!X 预定义全局钩子。Discuz!X 会在页面输出前,将该函数的返回值插入到页面对应的地方。
关于这部分内容更加详细的描述请参考官方技术文档:Discuz! 的插件机制

1.1.4 其他相关文件
通常一个功能强大的插件都会自带独立的 js 文件,以及相关的模板,本例也将演示如何在插件中组织使用这些文件。
相关文件列表如下:
模板:template/gmt.htm
功能模块:gmt.inc.php
JS 库:gmt.js
您需要登录后才可以回帖 登录 | 邀请注册

本版积分规则



京ICP备08000958号-1|腾讯云|阿里云|联系方式|Bacysoft.cn

GMT+8, 2024-11-23 16:35 , Processed in 0.013283 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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