您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
Discuz添加自定义模块
吴越潇2025-07-13Discuz教程已有人查阅
导读功能描述:每个会员都可以写下自己的心情,游客不可以留言。按时间倒序显示较新的留言。我们的宗旨是尽量不要去修改或过多依懒默认模板或程序,否则,Discuz!升级时会给你带来无尽的痛苦...
功能描述:每个会员都可以写下自己的心情,游客不可以留言。按时间倒序显示较新的留言。
我们的宗旨是尽量不要去修改或过多依懒默认模板或程序,否则,Discuz!升级时会给你带来无尽的痛苦...
目录
[隐藏]
1 设计表结构:
2 创建的文件:(./表示站点根目录)
3 moop.php
4 list.php
5 list.htm
6 publish.php
7 publish.htm
8 关于语言包的提取
设计表结构:
moop.php
语言包目录:./source/language
首先给我们的功能建一个专用目录:./source/language/mood
在专用目录下创建文件:
lang_template.php 名称是固定的 lang()函数会自动加载这个文件
我们的宗旨是尽量不要去修改或过多依懒默认模板或程序,否则,Discuz!升级时会给你带来无尽的痛苦...
目录
[隐藏]
1 设计表结构:
2 创建的文件:(./表示站点根目录)
3 moop.php
4 list.php
5 list.htm
6 publish.php
7 publish.htm
8 关于语言包的提取
设计表结构:
CREATE TABLE pre_mood_wall (
mid mediumint(8) unsigned NOT NULL auto_increment COMMENT '心情id',
uid mediumint(8) unsigned NOT NULL default '0' COMMENT '用户id',
username varchar(15) NOT NULL default '' COMMENT '用户名称',
dateline int(10) unsigned NOT NULL default '0' COMMENT '发布时间',
message text NOT NULL COMMENT '内容',
PRIMARY KEY(mid),
KEY dateline (dateline)
) ENGINE=MyISAM COMMENT='心情墙';
创建的文件:(./表示站点根目录)
./mood.php //入口文件
./source/module/mood/list.php //查看心情
./source/module/mood/publish.php //发布心情
./template/default/mood/list.htm //查看心情列表模板
./template/default/mood/publish.htm //发布心情模板
功能简单,所以没有涉及到专用函数和类的文件 (source/class目录和source/function目录)moop.php
<?php
// 定义应用 ID 全局记录当前用户所在位置,不需要可定义为0 不要省略
define('APPTYPEID', 0);
define('CURSCRIPT', 'mood');
//====================================
// 基础文件引入
//====================================
require './source/class/class_core.php';
$discuz = & discuz_core::instance();
//====================================
//模块定义以及模块缓存定义
//====================================
$modarray = array('list', 'publish');
// 判断 $mod 的合法性
$mod = !in_array($discuz->var['mod'], $modarray) ? 'list' : $discuz->var['mod'];
//定义当前模块常量
define('CURMODULE', $mod);
//====================================
// 加载核心处理,各程序入口文件代码相同
//====================================
$discuz->init();
//====================================
// 以下内容由各个模块根据需要自行撰写程序运行环境
// 位于核心处理与mod加载之前,可以处理一些各mod共用的一些数据,或入口权限判断等...
// 由于本功能只需要游客做发布的限制,所以判断就要放到module/mood/publish.php中去了。
//====================================
//===================================
//加载 mod
//===================================
require DISCUZ_ROOT.'./source/module/mood/'.$mod.'.php';
?>
list.php
<?php
// mod文件只能被入口文件引用,不能直接访问
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
//初始化当前页码
$page = empty($_GET['page'])?1:intval($_GET['page']);
if($page<1) $page=1;
//分页
$perpage = 20;
$start = ($page-1)*$perpage;
//获取当前页的留言数据
$list = array();
$query = DB::query("SELECT * FROM ".DB::table('mood_wall')." WHERE 1 ORDER BY dateline DESC LIMIT $start, $perpage");
while($mood = DB::fetch($query)) {
$mood['dateline'] = dgmdate($mood['dateline'], 'u');
$list[] = $mood;
}
//获得一个简单的分页,只有上一页和下一页,这个不需要count()数据表中的所有记录
$multi =page(count($list), $perpage, $page, 'mood.php?mod=list');
//数据准备完毕,引入相应的模板,准备输出
include_once template("mood/list");
?>
list.htm
<!--//说明: 显示公共头部模板-->
<!--{template common/header}-->
<!--//说明: 开始显示留言-->
<div id="ct" class="wp cl">
<h1 class="mt">心情墙 - <!--{if $_G[uid]}--><a href="mood.php?mod=publish">发表心情</a><!--{/if}--></h1>
<div class="bm">
<!--{if $list}-->
<!--//说明: loop 循环一个数组 相当于foreach(){}-->
<!--{loop $list $mood}-->
<a href="home.php?mod=space&uid=$mood[uid]" target="_blank"><!--{avatar($value[authorid],small)}--></a><br>
<a href="home.php?mod=space&uid=$mood[uid]" title="$mood[username]" target="_blank" class="xi2">$mood[username]</a> 发表于: $mood[dateline]
<br>
心情: $mood[message]
<hr>
<!--{/loop}-->
<!--//说明: 显示准备好的分页链接-->
$multi
<!--{else}-->
<p class="emp">暂时没有记录...</p>
<!--{/if}-->
</div>
</div>
<!--//说明: 显示公共尾部模板-->
<!--{template common/footer}-->
publish.php
<?php
// mod文件只能被入口文件引用,不能直接访问
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
// 游客不能发表心情的判断
if(!$_G['uid']) {
showmessage('抱歉,您尚未登录,无法进行此操作', '', array(), array('login' => 1));
}
if(submitcheck('submit')) {
$message = cutstr(dhtmlspecialchars(stripslashes($_POST['message'])), 150, ''); //截取150个字节的内容
DB::query("INSERT INTO ".DB::table('mood_wall')." (uid, username, dateline, message) VALUES ('$_G[uid]', '$_G[username]', '".TIMESTAMP."', '".daddslashes($message)."')");
showmessage('发表成功。', 'mood.php?mod=list');
}
//显示发布表单
include_once template("mood/publish");
?>
publish.htm
<!--//说明: 显示公共头部模板-->
<!--{template common/header}-->
<!--//说明: 开始显示表单-->
<div id="ct" class="wp cl">
<h1 class="mt"><a href="mood.php?mod=list">心情墙</a> - 发表心情</h1>
<div class="bm">
<form method="post" action="mood.php?mod=publish" class="pns">
<input type="hidden" name="formhash" id="formhash" value="{FORMHASH}" />
<!--FORMHASH 自动产生,submitcheck()函数要判断这个值-->
<textarea name="message"></textarea><br><br>
<input type="submit" class="pn vm" name="submit" value="发表" />
</form>
</div>
</div>
<!--//说明: 显示公共尾部模板-->
<!--{template common/footer}-->
关于语言包的提取以上示例中的汉字都是写到模板和程序代码里的。如果你想支持多种汉字编码,那么提取到统一的语言包中,与代码分离会方便很多。语言包目录:./source/language
首先给我们的功能建一个专用目录:./source/language/mood
在专用目录下创建文件:
lang_template.php 名称是固定的 lang()函数会自动加载这个文件
<?php
$lang = array (
'mood_name' => '心情墙',
'mood_publish' => '发表心情',
'mood_publish_succeed' => '发表成功。',
'not_loggedin' => '抱歉,您尚未登录,无法进行此操作',
);
?>
//注:'not_loggedin' 这个在公共的lang_message.php里已经存面
//理论上是可以直接使用showmessage('not_loggedin'...),但还是用自己的踏实。showmessage(lang('mood/template', 'not_loggedin')...)
//模板中的汉字替换成语言包
<h1 class="mt"><a href="mood.php?mod=list">心情墙</a> - 发表心情</h1>
变成
<h1 class="mt"><a href="mood.php?mod=list">{lang mood_name}</a> - {lang mood_publish}</h1>
//程序中使用语言包
showmessage('抱歉,您尚未登录,无法进行此操作', '', array(), array('login' => 1));
变成
showmessage(lang('mood/template', 'not_loggedin'), '', array(), array('login' => 1));
本文标签:
很赞哦! ()
相关教程
图文教程
discuz相册功能在哪,怎么用
discuz相册位于discuz后台的“站点功能”中,其查找方法:1、登录discuz网站的后台;2、找到并点击“管理中心”;2、找到并打开“全局”;3、在左侧位置找到“站点功能”
discuz登录流程分析
discuz登录流程解析,最近在研究,Ucenter的同步登陆机制,就先从discuz的登录开始了处理脚本source/module/member/member_logging.php
从数据库直接导入帖子到Discuz论坛的方法
因为我的一个网站需要升级成discuz系统. 所以需要把以前的帖子都导入到discuz中, 当然也包括以前的注册用户也需要导入到discuz中. 导入用户的事情, 待会写另一篇帖子说
Discuz缓存清理与性能优化的方法和技巧
在Discuz论坛的运维中,缓存清理和性能优化是我们经常会遇到的问题。Discuz作为一个功能强大的论坛系统,内部使用了大量的缓存机制来提高访问速度和响应性能。
相关源码
-
(自适应响应式)蓝色律师事务所法务团队网站pbootcms模板为律师事务所和法律服务机构打造的专业网站模板,展现法律专业性与权威性,手工编写标准DIV+CSS代码,结构清晰优化,确保高效运行,自动适配电脑、平板和手机等各类设备,提供更好浏览体验查看源码 -
(自适应响应式)pbootcms紫色美容整形机构企业模板下载基于PbootCMS内核开发的响应式网站模板,为医疗美容机构、整形医院等企业设计,提供完整的线上展示平台采用紫色系配色方案,整体风格专业大气。模板包含首页轮播、服务项目、专家团队、案例展示等核心模块,能够充分展示医疗美容机构的专业服务和特色优势。查看源码 -
(自适应响应式)环保水净化处理设备阀门等网站源码下载基于PbootCMS内核开发的响应式模板,为水处理设备、空气净化器等环保企业设计,自适应手机端浏览。通过简洁高效的后台管理系统,助力环保科技企业快速建立专业在线展示平台。查看源码 -
帝国cms7.5手游评测资讯礼包合集游戏专区下载网站模板本模板基于帝国CMS系统开发,为手游门户网站设计。支持PC端与移动端同步生成HTML静态页面,内置多端同步生成功能。模板架构针对手业特点优化,满足APP下载、游戏资讯、攻略等内容发布需求。查看源码 -
(自适应)证书授权书防伪查询系统pbootcms模板本模板基于PbootCMS系统开发,为各类证书查询机构设计,可快速构建高效安全的证书核验平台。采用响应式布局技术,自动适配手机端操作,支持批量导入证书数据,提供便捷的查询接口,满足机构证书管理及用户在线核验需求。查看源码 -
(自适应响应式)AI智能电子科技产品pbootcms网站模板下载基于PbootCMS内核的响应式模板,为AI智能硬件、电子产品等科技企业打造,通过技术创新实现品牌数字化升级。查看源码
| 分享笔记 (共有 篇笔记) |
