您现在的位置是:首页 > 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));
本文标签:
很赞哦! ()
相关教程
图文教程
discuz3.2去掉forum.php
discuz3.2去掉forum.php的方法:首先依次点击“界面->导航设置->主导航”;然后建立个新导航;最后在域名设置中设置好自己的域名即可。
discuz插件开发入门小白也能学会
作为一个新手,目前也是刚刚玩转discuz的插件功能,好东西不敢独享,就拿出来大家一起分享入门的过程。现在网上很多关于discuz的插件教程都是很简单的教程,原因可能是这个东西是商业化的东西,本着分享的精神
discuz缓存机制分析介绍
使用缓存机制的目的很明显,降低服务器性能的消耗,对于常用且变动比较小的数据的数据,可以尽可能的使用缓存来解决,代替最原生的不断的进行数据库查询匹配的过程。
怎么安装和配置discuz
本篇文章给大家介绍一下discuz安装配置。有的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。discuz安装配置准备 LAMP 环境LAMP 是 Linux、Apache、MySQL 和 PHP 的缩写
相关源码
-
(PC+WAP)蓝色不锈钢簧线金属制品营销型pbootcms网站模板本模板基于PbootCMS内核开发,为不锈钢及金属制品企业量身打造。采用响应式设计,适配PC与移动设备,提供统一后台管理体验,数据实时同步更新。查看源码 -
帝国cms题库问答学习平台模板知识付费网站源码+数据采集为教育机构、培训平台及在线学习场景设计,提供完整的题库管理与问答服务解决方案。支持多种题型展示与答案查询,满足不同层次的学习需求。查看源码 -
(PC+WAP)蓝色电子半导体电子设备网站pbootcms源码下载本模板基于PbootCMS内核开发,为半导体和电子科技行业设计,特别适合电子元器件、集成电路、半导体设备及相关技术产品展示。查看源码 -
(PC+WAP)红色厨具厨房用品设备pbootcms模板源码下载为厨具设备企业设计的响应式网站模板,采用PbootCMS内核开发,适用于商用厨房设备、家用厨具、厨房用品等企业展示。模板包含产品展示、新闻动态、案例中心等标准模块,助您快速搭建专业级行业网站。查看源码 -
(PC+WAP)化工材料企业环保能源绿色营销型pbootcms模板源码下载本模板为化工材料及环保能源企业设计,采用PbootCMS开发,可展示各类化工产品、环保技术及能源解决方案。查看源码 -
(PC+WAP)压缩机离心风机红色机械设备营销型网站pbootcms模板基于PbootCMS开发的压缩机/离心风机专用模板,助力机械设备企业构建高效营销平台;模板可编辑压缩机参数表、风机性能曲线等专业展示模块查看源码
| 分享笔记 (共有 篇笔记) |
