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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

Discuz!简单开发技巧,轻松做技术

[复制链接]
体无完肤 发表于 2009-11-16 19:46:39 | 显示全部楼层 |阅读模式
本帖最后由 一文天 于 2009-12-2 10:21 编辑

站长们在运营的同时,可能会想要根据自己具体的需求来修改、制作一些特殊功能,但是苦于不懂技术,四处求助,看完下面的教程,希望大家能从中获取到一些基本技能,在小修小改时候能祝您一臂之力!

Discuz!系统常用函数及变量:

常用函数:

showmessage()函数:该函数就是我们最常见的页面提示跳转,比如登陆、退出、个人信息修改提交等等。

效果演示:



函数原型
  1. showmessage($message, $url_forward = '', $extra = '', $forwardtype = 0)
复制代码
函数解释:在我们Discuz!的php文件中,可以通过这个函数还指定跳转页面,自定义跳转时候的提示信息。
其中有四个参数,第一个是必填参数,后三个为可选参数,可选就是说使用时候可以不用填写,当然填写也不会有错;
第一个参数是跳转时候的提示信息,比如“您的修改已提交,正在为您跳转”;
第二个参数是要跳转的页面的url,就是指定他要跳转到哪个页面,可以是绝对URL,也可以使相对地址,比如:“index.php”就是跳转到首页。
第三个和第四个参数,可选的,对于我们站长来说,基本用不到,可以不用深究。通常使用两个参数即可。

范例:showmessage('您的修改已提交,正在为您返回首页', 'index.php');

sendpm()函数:该函数用于发送短消息(包括私人消息、系统消息、提醒消息等)。

函数原型:
  1. sendpm($toid, $subject, $message, $fromid = '');
复制代码
函数解释:同样在Discuz!的php文件中,我们可以使用该函数发送短消息。
其中有四个参数,前三个为必填参数,最后一个为可选参数;
第一个参数是接收短消息的用户UID;
第二个参数是短消息的标题;
第三个参数是短消息的正文内容;
第四个参数是发送短消息的用户UID;
需要注意:当第一个参数$toid为0时,消息类型为公共消息,$fromid为0时,消息类型为系统消息,$message这个消息内容的参数,不支持HTML,但是支持Discuz!代码。

sendmail函数:该函数用于发送电子邮件,前提是论坛系统的邮件必须配置成功,能正常发送邮件。

函数原型:
  1. sendmail($email_to, $email_subject, $email_message, $email_from = '')
复制代码
该函数同样有四个参数,其中前三个为必填参数,最后一个为可选参数;
第一个参数是接收电子邮件的用户邮箱(看准了,是电子邮箱);
第二个参数是电子邮件的标题;
第三个参数是电子邮件的正文内容;
第四个是发送邮件的邮箱;
注意,第四个参数发送邮件的电子邮箱,可选,默认留空则为系统发送的邮件;
这个发送电子邮件的函数不常用到,可以根据自己特殊需求来制作特殊功能时候使用,比如:N天未登录邮件唤醒;

$db对象的各个MYSQL功能函数:
这些MYSQL相关函数,对于初级站长来说比较难,因为涉及php的一些知识,如果不了解这些,请慎用;
下面主要说一下最常用的SQL语句执行函数:$db->query($sql);
$db->query($sql),通常只指定一个参数,那就是SQL语句,比如:
  1. $db->query("SELECT * FROM cdb_mytable");
复制代码
这样就执行了SELECT * FROM cdb_mytable这条SQL语句。
其他更对相关函数,有一定基础的站长,可以参考include/db_mysql.class.php这个文件。

模版中使用的常用JS函数:

showPrompt()函数:
函数效果:就像积分变动提醒一样那种漂亮的提示横条,我的Infonitce插件也用到这个函数;

函数范例
  1. <span onclick="showPrompt(null, null, '哈哈', 2000);">[点击我看看是什么效果]</span>
复制代码
函数解释:就我们需要的这种功能来说,只需要你关心里面最后两个参数,很明显,“哈哈”这个参数就是提示信息内容,“2000”就是提示信息停留的时间,单位是毫秒!
函数效果演示



showDialog函数:用于弹出提示窗口

函数原型:
  1. showDialog(msg, mode, t, func, cover)
复制代码
第一个参数:弹出窗口里面提示信息的内容;
第二个参数:这个窗口的类型,可选值有:info、notice、alert、confirm等;具体区别参照下图:






第三个参数:是弹出窗口的标题;
第四个参数:是点击“确定”后执行的函数,非必须,根据自己需要使用函数;
第五个参数:是否带遮罩层(就是弹出窗口后,背景页面是否变成暗色不可用),0为不遮罩,1为遮罩;

函数范例
  1. <a onclick="showDialog('你是坏蛋!', 'notice', '通知信息', null, 0)" href="javascript:;">点击我看看</a>
复制代码
更多JS常用函数,参考:http://bbs.7dps.com/jstour.php

Discuz!系统全局变量篇:

$discuz_userss:当前用户的用户名;
$discuz_uid:当前用户的UID;
$bbname:论坛名称;
$boardurl:论坛地址;
$adminid:论坛管理组的数字ID编号,如:1是管理员,2是超版,3是版主;
$version:论坛的版本号;
$groupid:用户组ID编号;

更多Discuz!系统全局变量参考:http://qun.qq.com/air/#12893286/bbs/view/cd/1/td/2

为Discuz!添加一个属于自己的缓存文件:

首先,我们要知道Discuz!封装的函数writetocache,用来写入缓存的,在include/cache.func.php文件中定义的。
函数原型:writetocache($script, $cachenames, $cachedata = '', $prefix = 'cache_')

那么,要写自己的缓存文件,要用这个函数,首先我们必须调用这个定义函数的文件,如下:
  1. require_once DISCUZ_ROOT.'./include/cache.func.php';
复制代码
然后就可以直接使用函数,例如:
writetocache($script, $cachenames, $cachedata = '', $prefix = 'cache_')

详细的writetocache解释及使用范例(请下载附件):

借助common.inc.php做任何事情:

Discuz!系统中,include/common.inc.php这个文件,可以理解为系统的一个通用文件,里面包含了全局的一些通用信息,可以不必理解它是怎么写的,什么原理,只要学会应用即可,毕竟我们是站长,如果是开发者,可以深究下。
在Discuz!的php文件中,文件开始先包含一下这个文件,如下:
  1. require_once './include/common.inc.php';
复制代码
然后往下我们就可以使用上面所举的全局函数和一些变量,直接使用即可。
包含这个文件后,我们可以做很多事情,比如自己写一个单页的程序:
  1. <?php
  2. require_once './include/common.inc.php';
  3. include template('intro');
  4. ?>
复制代码
这样的话,就是一个单页了,单页内容直接在模板文件intro.htm里写即可,关于模板里面的函数,下面教程会讲到。

关于单页的创作教程http://bbs.7drc.com/thread-523-1-1.html

Discuz!系统中的模板函数:

大家肯定都注意到,Discuz!系统的可访问页面的php文件底部,一般都会有下面这么一句:
  1. include template(xxx);
复制代码
这个就是调用模板文件的一个方法(函数),里面的参数“xxx”就是模板文件的文件名,比如:intro.htm文件,那就是:
  1. include template(intro);
复制代码
注意,里面的参数只填写模版文件的文件名,不需要填写模版文件的扩展名(.htm)。

那么,模板文件放在哪里呢?可以放在自己当前风格模板目录下,也可以放在系统默认模板目录:templates/default。

在新内核插件中,你也会看到这样的写法:
  1. include template(’xxx’, 'xxxx’, 'xxxxx');
复制代码
第一个参数,是模板文件名;
第二个是插件的唯一标识符;
第三个是模板文件存放的目录;

范例如下
  1. include template(’tguide’, 'drc_tguide’, './plugins/drc_tguide/templates');
复制代码
模板文件中,如何调用其他系统的模板文件呢?比如,我要做的页面,需要头部和尾部与论坛一致,那么看下面(intro.htm):
  1. {template header}
  2. 这里是自己模版文件内容区域
  3. {template footer}
复制代码
{template header}这种是在模板文件(.htm)中调用其他模版文件的方法,像上面一样,在开头和结尾分别调用系统的头部和尾部文件,即可实现自己的页面与论坛保持一致的感觉。

然后呢,在模板文件中,可以直接使用对应php文件中的变量,或者系统的全局变量;

综合上面几点教程内容,我自己写了个范例,大家可以下载参考:

--------------------------------------------------------------------------

开启及使用HTML教程:
http://bbs.7drc.com/plugin.php?id=tutorial:tutorial&type=changy&page=4

论坛“分类信息”设置与使用教程:
http://bbs.7drc.com/plugin.php?id=tutorial:tutorial&type=changy&page=5

文件对比工具(Beyond Compare)及使用教程:
http://bbs.7drc.com/plugin.php?id=tutorial:tutorial

本帖子中包含更多资源

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

x

评分

6

查看全部评分

open.style 发表于 2009-11-16 19:53:01 | 显示全部楼层
天气真的好冷
回复

使用道具 举报

inonce 发表于 2009-11-17 00:11:38 | 显示全部楼层
顶个,很有趣
回复

使用道具 举报

肥爺 发表于 2009-11-17 01:42:49 | 显示全部楼层
体体~你应该知道怎么做的
回复

使用道具 举报

一文天 发表于 2009-11-17 10:42:26 | 显示全部楼层
很棒。把Discuz!内部几个常用函数(通信和消息显示)拆析的简单易懂。广大DZer们要好好看。这是DZ二次开发的几个重要点。
回复

使用道具 举报

柯七 发表于 2009-11-17 12:10:28 | 显示全部楼层
前排支持!体无完肤技术很高深!

深不可测!!

摸不到JJ..

评分

1

查看全部评分

回复

使用道具 举报

yangjiangh 发表于 2009-11-17 12:26:40 | 显示全部楼层
技术很好 讲的很详细
回复

使用道具 举报

fansfan 发表于 2009-11-18 12:15:46 | 显示全部楼层
学习了 !!!!!!!!!
回复

使用道具 举报

nimeilai 发表于 2009-11-18 16:37:21 | 显示全部楼层
好东西绝对支持!!
回复

使用道具 举报

poosou 发表于 2009-11-18 17:55:14 | 显示全部楼层
老体,你知道该怎么办了!呵呵
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-13 14:20 , Processed in 0.050986 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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