您现在的位置是:首页 > 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中SESSION机制讲解
在Discuz!X中一如继往的,SESSION并没有使用PHP自带的SESSION机制,而是系统的一套自带的机制。在数据库中可以看到有两个SESSION表:
Discuz模板的安装方法
很多同学都不会安装模板和修改模板,从今天开始站帮网开始更新一些模板相关的简易教程,提供新手站长学习使用
Centos搭建Discuz论坛的方法
系统要求:CentOS6.864位操作系统搭建Discuz论坛准备LAMP环境LAMP是Linux、Apache、MySQL和PHP的缩写,是Discuz论坛系统依赖的基础运行环境。
lamp+nginx代理discuz+wordpress+phpmyadmin的方法
实验课题:搭建LAMP,安装Nginx,作为代理,将MySQL安装在单独的机器,apache负责动态,nginx负责静态1、更换163下载源2、分别在设备A和B中下载各个软件;
相关源码
-
(自适应)蓝色英文外贸电子科技产品带三级栏目网站模板为外贸企业设计的英文网站模板,基于PbootCMS系统开发。突出多语言支持和国际化布局,三级栏目结构清晰展示产品分类,响应式设计确保更好客户在移动端和PC端获得一致的专业体验。查看源码 -
(自适应)html5宽屏电线电缆材料加工制造类企业网站源码下载本模板基于PbootCMS系统开发,特别适合电线电缆、电缆材料及相关加工制造类企业使用。采用HTML5宽屏设计,能够展示各类电缆产品的技术参数和规格详情,帮助客户全面了解产品特性。查看源码 -
响应式pbootcms模板新闻资讯博客自媒体门户网站行业通用解决方案为新闻资讯、自媒体博客打造的响应式网站模板,同时支持企业门户、行业资讯等多场景快速适配。通过简单的图文替换即可实现跨行业转型,显著降低建站成本。查看源码 -
(自适应)蓝色沙盘复古建筑模型制作网站模板源码下载为建筑沙盘模型企业设计的响应式网站模板,通过三维空间展示技术结合产品参数可视化,有效提升模型作品的线上呈现效果与客户咨询转化率。查看源码 -
(PC+WAP)蓝色五金机械设备营销型网站源码下载基于PbootCMS内核开发的营销型企业网站模板,为五金机械设备类企业打造,通过标准化数字展示提升客户转化率。模板采用模块化设计,可快速适配机床工具、建筑五金、阀门管件等细分领域。查看源码 -
(自适应响应式)绿色环保防腐木材轻钢别墅建材pbootcms模板下载本模板为环保防腐木材、轻钢别墅建材类企业设计开发,基于PbootCMS内核构建,充分考虑了建材行业的展示需求与产品特点。模板设计风格自然环保,布局清晰合理,呈现建材产品特性与专业优势,帮助访客直观了解产品特点并建立信任感。查看源码
| 分享笔记 (共有 篇笔记) |
