返回顶部
首页 > 资讯 > 精选 >Discuz论坛怎么添加配置选项
  • 149
分享到

Discuz论坛怎么添加配置选项

2023-06-08 08:06:48 149人浏览 八月长安
摘要

这篇文章主要介绍Discuz论坛怎么添加配置选项,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Discuz! 论坛在后台有很多配置选项,通过这些配置选项可以实现很多功能。在 Discuz!论坛的二次开发过程中,我们也

这篇文章主要介绍Discuz论坛怎么添加配置选项,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Discuz! 论坛在后台有很多配置选项,通过这些配置选项可以实现很多功能。在 Discuz!论坛的二次开发过程中,我们也同样要经常添加一些配置,然后根据配置来进行不同的操作。下面我就来介绍一下如何在 Discuz! 论坛中添加配置选项。
我们以 Discuz!6.0 为例。首先我们来看一下 Discuz! 论坛后台的配置界面,以管理员身份登录论坛后台,依次选择‘基本设置’ -> ‘基本设置’后会出现以下的界面:

Discuz论坛怎么添加配置选项
图1
这个页面用了框架,我们在右下方的页面中点击右键选择‘属性’,在弹出的窗口中,我们发现这个页面的 URL 是 '/admincp.PHP?action=settings&do=basic' ,这个页面用的程序是admincp.php ,先来分析一下这个文件。
这个文件的第 172-290 行大致的内容如下:
代码如下:
$cpscript = '';
 if($adminid == 1) {
 if($action == 'home') {
   $cpscript = 'home';
 } elseif($action == 'runwizard' && isfounder()) {
   $cpscript = 'runwizard';
 } elseif ……
 } elseif($adminid == 2 || $adminid == 3) {
 if($action == 'home') {
   $cpscript = 'home';
 } elseif((($allowedituser || $allowbanuser) && ($action == 'editmember' || $action == 'banmember'))   || ($allowbanip && $action == 'ipban')) {
   $cpscript = 'members';
 } elseif……
 }
 if($cpscript) {
  } elseif……
 }
 if($cpscript) {
 require_once DISCUZ_ROOT.'./admin/'.$cpscript.'.inc.php';
 } ……
这段程序主要就是根据 $action 变量来给 $cpscript 赋值,然后根据 $cpscript 的值来引入 admin 目录下的程序文件。我们注意一下 179 行左侧的 $action 值的判断,会发现其$cpscript 的值是 'settings' ,那就是说 283 行引入的程序文件是 'admin/settings.inc.php' 。
然后打开 settings.inc.php 文件,会发现里面的内容好长呀,不要被这给吓坏了,仔细分析一下就好了。
第 14 行:
代码如下:
$operation = $operation ? $operation : (!empty($do) ? $do : '');
这里会根据 GET 过来的 $do 值来给 $operation 赋值,这个例子中其值是 'basic' 。
第 17 行:
代码如下:
$query = $db->query("SELECT * FROM {$tablepre}settings");
while($setting = $db->fetch_array($query)) {
 $settings[$setting['variable']] = $setting['value'];
}
这些程序段是从数据库把数据读出来存到数组 $settings 中以便下面调用。
下面的程序结构如下:
代码如下:
if(!submitcheck('settingsubmit')) {
 if($operation == 'access') {
 ……
} elseif($operation == 'styles') {
 ……
} elseif ……
} else {
 //表单提交后的数据处理
 ……
}
程序中的 submitcheck 函数是用检查一个表单是否进行提交,如果表单没有提交,则根据前面处理过的 $operation 来显示表单。在这里 $operation 的值是 basic ,其执行的是下面一段:
代码如下:
$operation = 'basic';
showtype('settings_general', 'top');
showsetting('settings_bbname', 'settingsnew[bbname]', $settings['bbname'], 'text');
showsetting('settings_sitename', 'settingsnew[sitename]', $settings['sitename'], 'text');
showsetting('settings_siteurl', 'settingsnew[siteurl]', $settings['siteurl'], 'text');
showsetting('settings_index_name', 'settingsnew[indexname]', $settings['indexname'], 'text');
showsetting('settings_icp', 'settingsnew[icp]', $settings['icp'], 'text');
showsetting('settings_boardlicensed', 'settingsnew[boardlicensed]', $settings['boardlicensed'], 'radio');
showsetting('settings_bbclosed', 'settingsnew[bbclosed]', $settings['bbclosed'], 'radio');
showsetting('settings_closedreason', 'settingsnew[closedreason]', $settings['closedreason'], 'textarea');
在这里用到了一个自定义函数 showsetting ,它的第一个参数是这个配置选项的名字,第二个参数是在 html 显示时 input 的 name 值,第三个参数是当前配置选项的值,是上面从数据库查出来的数组 $settings 中的一个值,第四个参数是 input 的类型。我们添加一个自己的配置选项 mytest 。在上面代码的最后面添加如下代码:
代码如下:
showsetting('settings_mytest', 'settingsnew[mytest]', $settings['mytest'], 'radio');
保存,刷新页面发现在这个页面最下方多出一个选项:
settings_mytest  是  否
但是发现其是英文的,我们修改一下语言包就可以了。在templates/default/admincp.lang.php 文件的第 450 行 'settings_closedreason_comment' => ' 论坛关闭时出现的提示信息' ,下面添加如下代码:
代码如下:
'settings_mytest' => '测试选项:',
'settings_mytest_comment' => '测试选项的提示信息',
保存后再刷新就有中文提示了。
至此在界面上的显示已经处理完毕,下面来说一下如何处理表单提交后的数据。在/admin/settings.inc.php 文件的 if(!submitcheck('settingsubmit')) {} 对应的 else 语句部分。这部分的代码,首先对提交过来的数据进行处理,然后全部放到 $settingsnew 数组中,其实也就是 POST 过来的数据进行一下检查。在这个文件的 1140 行左右有如下代码:
代码如下:
foreach($settingsnew AS $key => $val) {
 if(isset($settings[$key]) && $settings[$key] != $val) {
   $$key = $val;
   $updatecache = TRUE;
   if(in_array($key, array('newbiespan', 'topicperpage', 'postperpage', 'memberperpage', 'hottopic',
  'starthreshold', 'delayviewcount', 'visitedforums', 'maxsigrows', 'timeoffset', 'statscachelife',
 'pvfrequence', 'oltimespan', 'seccodestatus', 'maxprice', 'rssttl', 'rewritestatus', 'bdaystatus',
 'maxonlines', 'loadctrl', 'floodctrl', 'reGCtrl', 'regfloodctrl', 'searchctrl', 'extcredits1', 'extcredits2',
 'extcredits3', 'extcredits4', 'extcredits5', 'extcredits6', 'extcredits7', 'extcredits8',
 'transfermincredits', 'exchangemincredits', 'maxincperthread', 'maxchargespan', 'maxspm',
  'maxsearchresults', 'maxsmilies', 'threadmaxpages', 'membermaxpages', 'maxpostsize',
  'minpostsize', 'maxavatarsize', 'maxavatarpixel', 'maxpolloptions', 'karmaratelimit', 'losslessdel',
  'edittimelimit', 'smcols', 'watermarktrans', 'watermarkquality', 'jscachelife', 'waptpp', 'wapppp',
 'wapmps', 'maxmodworksmonths', 'frameon', 'maxonlinelist'))) {
     $val = (float)$val;
   }
   $db->query("REPLACE INTO {$tablepre}settings (variable, value) VALUES ('$key', '$val')");
 }
 }
这段代码的作用就是检查 $settingsnew 数组中是否有对应的选项,如果有并且是数字选项时进行 float 转换,然后全部 REPLACE INTO 到数据表 settings 中, mytest 选项是我们新添加的,数据表中没有这个选项,我需要先在数据库中执行如下 sql 语句: REPLACE INTO cdb_settings(variable, value) VALUES('mytest', '0') ,注意修改一下表前缀。这们的 mytest 选项就会存入数据库中。
在 1160 行左右会执行代码 updatecache('settings') 来把 settingsnew 数组里的数据自动进行缓存,具体实现方法有兴趣的朋友可以仔细看一下 /include/cache.func.php 文件是如何实现的。
数据进行缓存后会在 /forumdata/cache/cache_settings.php 文件中 $_DCACHE['settings'] 数组中有 mytest 项,然后我们就可以通过这个选项来做一些操作。在 /include/common.inc.php 文件的第 93 行左右有如下代码:
代码如下:
$cachelost = (@include DISCUZ_ROOT.'./forumdata/cache/cache_settings.php') ? '' : 'settings';
@extract($_DCACHE['settings']);
通过上面的代码,直接把 mytest 配置选项的值用 $mytest 变量来存放,我们就可以直接判断 $mytest 来进行操作了。在 index.php 文件的 17 行加入如下代码:
代码如下:
if($mytest) {
 echo 'Hello This is Test';
}
运行后,效果如下:


Discuz论坛怎么添加配置选项
图2至此已经成功的为 Discuz! 论坛添加了一个选项,论坛当然还有相当的选项,其基本思路都是这样的,可以根据具体情况来进行添加。

以上是“Discuz论坛怎么添加配置选项”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Discuz论坛怎么添加配置选项

本文链接: https://lsjlt.com/news/252884.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Discuz论坛怎么添加配置选项
    这篇文章主要介绍Discuz论坛怎么添加配置选项,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Discuz! 论坛在后台有很多配置选项,通过这些配置选项可以实现很多功能。在 Discuz!论坛的二次开发过程中,我们也...
    99+
    2023-06-08
  • 普通discuz论坛网站选择什么配置的云服务器
    普通discuz论坛网站选择什么配置的云服务器?选择适当的云服务器配置对Discuz论坛的正常运行和用户体验至关重要。在选择之前,需要充分了解论坛的需求和预估用户访问量,以便做出明智的选择。普通的Discuz论坛网站在选择云服务器配置时需...
    99+
    2024-01-23
    云服务器配置 普通discuz论坛网站选择什么配置的云服务器? 网站云服务器配置 论坛网站云服务器 云服务器知识
  • 论坛主机租用怎么配置
    论坛主机的配置应该根据论坛的规模和访问量来确定,以下是一些建议:1. CPU:选择多核心的CPU,可以提高服务器的处理能力。2. 内...
    99+
    2023-06-10
    论坛主机 主机
  • 服务器论坛网站搭建怎么选择配置
    服务器论坛网站搭建的配置选择需要考虑以下因素:1. 流量:根据预计的访问量和数据传输量来选择带宽和流量限制。2. 处理器:选择能够支...
    99+
    2023-06-14
    服务器论坛 服务器
  • 选用香港空间搭建Discuz论坛的注意事项有哪些
    选用香港空间搭建Discuz论坛的注意事项有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 随着互联网的发展及普及,咱们每个人都可以在互联网的虚拟世界里面自由言论...
    99+
    2023-06-07
  • 论坛怎么选择服务器
    论坛选择服务器的方法有:1、选择多线路机房的服务器,以便网站能快速被用户访问;2、选择具有云计算架构的服务器;3、选择访问速度快、稳定性高、安全性强的服务器;4、选择具有免费数据备份服务的服务器。具体内容如下:1、机房条件:推荐您选择多线路...
    99+
    2024-04-02
  • discuz怎么设置屏蔽论坛用户发布的站外链接
      现在很多发外链的经常回到论坛张发些他们的链接,这样对网站很不利而且他们经常发的都是些垃圾内容,那我们怎么来屏蔽他们发的站外链接呢   进入论坛后台——用户——用户组&m...
    99+
    2022-06-12
    discuz 外链接
  • 美国论坛空间购买怎么选择
    1. 确定需求:首先要确定自己的需求,例如空间大小、流量、数据库支持、邮箱数量等等。2. 稳定性和可靠性:选择一个稳定可靠的论坛空间...
    99+
    2023-06-07
    论坛空间 空间
  • 网站论坛怎么选择香港服务器
    选择香港服务器的网站论坛可以通过以下步骤进行: 首先,确定你的目标受众群体是否主要位于香港或周边地区。如果是的话,选择香港服务器...
    99+
    2024-04-09
    香港服务器 服务器
  • excel下拉菜单选项怎么添加
    这篇文章主要介绍“excel下拉菜单选项怎么添加”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“excel下拉菜单选项怎么添加”文章能帮助大家解决问题。excel下拉菜单选项添加步骤:选中你需要添加下...
    99+
    2023-06-30
  • dell服务器论坛raid配置的方法是什么
    以下是dell服务器raid配置的方法:1. 进入Dell服务器的BIOS设置界面,找到RAID配置选项。2. 在RAID配置选项中...
    99+
    2023-05-30
    dell服务器论坛 服务器
  • 美国服务器论坛配置的方法是什么
    我无法提供具体的技术配置方法。但是一般来说,配置一个美国服务器论坛需要以下步骤:1.选择合适的服务器:根据论坛预计的流量和需求选择一...
    99+
    2023-06-04
    服务器论坛 服务器
  • vue打包添加gzip配置项方式
    目录vue打包添加gzip配置项 关于我写这篇文章的原因vue3.0配置gzip 及 资源404第一步:vue.config.js第二步:这里使用 nginx 进行配置vu...
    99+
    2024-04-02
  • 怎么通过代码向ComboBox添加选项
    在代码中向ComboBox添加选项可以通过以下步骤实现: 创建一个ComboBox对象: ComboBox comboBox =...
    99+
    2024-03-12
    ComboBox
  • react怎么添加less环境配置
    这篇文章主要介绍了react怎么添加less环境配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react怎么添加less环境配置文章都会有所收获,下面我们一起来看看吧。1.安装lessnpm in...
    99+
    2023-06-30
  • php论坛空间怎么设置透明背景
    要将 PHP 论坛空间设置为透明背景,您需要进行以下步骤:1. 打开您的 PHP 论坛空间,登录后进入后台管理页面。2. 找到“主题...
    99+
    2023-05-31
    论坛空间 空间
  • 网站论坛怎么选择低价香港服务器
    网站论坛选择低价香港服务器的方法:1、根据论坛网站的规模大小选择合适的香港服务器配置,以平衡网站与服务器的负载;2、选择可靠的香港服务器提供商,如能提供28小时在线技术客服服务等;3、根据实际情况选择可靠的香港服务器网络带宽和线路,避免资源...
    99+
    2024-04-02
  • 域名论坛网站搭建怎么选择服务器
    选择服务器时,需要考虑以下因素:1. 服务器性能:服务器的性能决定了网站的访问速度和稳定性。因此需要选择性能较好的服务器。2. 服务...
    99+
    2023-06-10
    域名论坛 域名
  • win7开始菜单怎么添加下载选项
    这篇文章主要讲解了“win7开始菜单怎么添加下载选项”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win7开始菜单怎么添加下载选项”吧!添加方法:首先右击“任务栏”空白处,直接选择“属性”选...
    99+
    2023-06-28
  • 使用FrontPage怎么添加一个选项按钮
    使用FrontPage怎么添加一个选项按钮?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。将光标定位在要放置选项按钮的位置,单击”插入“菜单。在弹出的子菜单中选择”表单“命令...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作