新闻中心

完美修改Discuz! x2.5论坛标题字数(80个字符)限制长度

作者 / 无忧主机 时间 2012-08-15 09:04:57

一个很烦人的问题,discuz!x2.5的帖子标题长度(字数)有限制,无忧主机(www.51php.com)小编从康盛官方论坛查了相关资料,是有80个字符的限制。换句话说,你在编辑帖子标题的时候,只能有80个字符,超过了就不显示了。这是一个蛋疼的问题,80个字符长度的帖子标题,怎么能满足论坛达人的需求类?如果你用的是discuz!x2.5 UTF8版本,那就更揪心了,因为utf8版本,一个汉字算3个字节,也就是26个汉字。是不是有点崩溃的感觉?还好,这种问题,不是一个人遇到,在discuz!x2.5官方论坛上,也有许多人问如何取消或加长默认标题长度。很高兴,这个问题已经有完美的解决方案,无忧主机(www.51php.com)小编这里就借花献佛,与大家共享这个案例。 目的:将discuz!x2.5论坛标题长度限制80字符,增加到限制120字符。 无忧主机(www.51php.com)小编温馨提示:论坛代码修改有风险,网站备份要先行。网站整站备份,请你参考:网站整站一键备份与恢复 工具:要顺利完成代码的修改,一个好用工具不可少,强烈推荐使用文本编辑器(editplus),不推荐使用记事本进行编辑修改。 方向:我们要把discuz!x2.5论坛标题字数(长度)限制80字符,增加到限制120字符,修改过程中,要涉及:mysql数据库、js验证文件数、修改函数验证、模版中定义的字符限制数量、语言包文件合计五个文件。同志们,工作量巨大繁琐,要仔细认真哦。我们操作前对网站进行一个整站备份是非常有必要的。 把discuz!x2.5论坛标题长度限制80字符,增加到限制120字符的详细操作步骤和说明: 1、Mysql数据库修改。 这里我们直接执行sql查询语句来完成,请你直接把下面的sql语句直接复制,到phpmyadmin工具中的sql语句执行窗口,执行即可。 如果你不知道如何登录无忧php虚拟主机的phpmyadmin工具,请你直接点击 “phpmyadmin数据库管理工具的使用说明”查询。

ALTER TABLE `pre_forum_post` CHANGE `subject` `subject` VARCHAR(120) NOT NULL;
ALTER TABLE `pre_forum_rsscache` CHANGE `subject` `subject` char(120) NOT NULL;
ALTER TABLE `pre_forum_thread` CHANGE `subject` `subject` char(120) NOT NULL;
2、修改JS文件: 我们要这里要修2个JS文件一个是forum_post.js和forum.js。详细修改如下: A、修改js验证字符数文件:static/js/forum_post.js 使用文本编辑器editplus打开计算文件forum_post,查找定位在约77行处,做如下修改: 源文件:
if(($('postsubmit').name != 'replysubmit' && !($('postsubmit').name == 'editsubmit' && !isfirstpost) && theform.subject.value == "") || !sortid && !special && trim(message) == "") {
                showError('抱歉,您尚未输入标题或内容');
                return false;
        } else if(mb_strlen(theform.subject.value) > 80) {
                showError('您的标题超过 80 个字符的限制');
                return false;
        }
修改替换为:
if(($('postsubmit').name != 'replysubmit' && !($('postsubmit').name == 'editsubmit' && !isfirstpost) && theform.subject.value == "") || !sortid && !special && trim(message) == "") {
                showError('抱歉,您尚未输入标题或内容');
                return false;
        } else if(mb_strlen(theform.subject.value) > 120) {
                showError('您的标题超过 120 个字符的限制');
                return false;
        }
B、修改目录:sitatic/js/forum.js 使用文本编辑器editplus打开计算文件forum.js,查找定位在约212行处,做如下修改: 源代码:
if(theform.message.value == '' && theform.subject.value == '') {
                s = '抱歉,您尚未输入标题或内容';
                theform.message.focus();
        } else if(mb_strlen(theform.subject.value) > 80) {
                s = '您的标题超过 80 个字符的限制';
                theform.subject.focus();
        }
  修改替换为:
if(theform.message.value == '' && theform.subject.value == '') {
                s = '抱歉,您尚未输入标题或内容';
                theform.message.focus();
        } else if(mb_strlen(theform.subject.value) > 120) {
                s = '您的标题超过 120 个字符的限制';
                theform.subject.focus();
        }
3、修改模版中定义的字符限制数量: 在discuz!x2.5模版中,有一句代码限制了帖子标题字符数,这是我们必须要修改的,让其支持更长的帖子标题。修改文件为:post_editor_extra.htm和forumdisplay_fastpost.htm A、post_editor_extra.htm路径目录:/template/default/forum/ 使用文本编辑器editplus打开计算文件post_editor_extra.htm,查找定位在约28行处,做如下修改: 源代码如下:
<span id="subjectchk"{if $_G[gp_action] == 'reply'} style="display:none"{/if}>
{lang comment_message1}
<strong id="checklen">80</strong> {lang comment_message2}</span>
修改替换为:
<span id="subjectchk"{if $_G[gp_action] == 'reply'} style="display:none"{/if}>
{lang comment_message1}
<strong id="checklen">120</strong> {lang comment_message2}</span>
B、forumdisplay_fastpost.htm路径目录:\template\default\forum\forumdisplay_fastpost.htm 使用文本编辑器editplus打开计算文件forumdisplay_fastpost.htm,查找定位在约32行处,做如下修改: 源代码:
<span>{lang comment_message1} <strong id="checklen">80</strong> {lang comment_message2}</span>
修改替换为:
<span>{lang comment_message1} <strong id="checklen">120</strong> {lang comment_message2}</span>
4、修改函数验证 修改一个验证函数(function_post.php)文件,这个非常重要,这里也对帖子标题长度做了限制,我们只需要修改限制长度即可。 function_post.php路径目录:source/function/function_post.php 使用文本编辑器editplus打开计算文件post_editor_extra.htm,查找定位在约345行处,做如下修改: 源代码:
if(dstrlen($subject) > 80) {
return 'post_subject_toolong';
}
修改为: if(dstrlen($subject) > 120) { return 'post_subject_toolong'; } 5、修改语言包 当会员编辑帖子标题的时候,如果超过定义的长度,那么系统就会友好的提示您,帖子标题长度太长了,这个地方虽然不是必须的,通过前面4个地方的修改,我们已经可以达到了我们的目的了,但是为了用户体验,我们必须要继续修改Discuz!x2.5的语言包,请语言包(lang_messege.php)中关于超过标题长度的系统提示修改正确。 lang_messege.php路径目录:source/language/lang_messege.php 使用文本编辑器editplus打开计算文件lang_messege.php,查找定位在约988行处,做如下修改: 'post_subject_toolong' => '抱歉,您的标题超过 120 个字符修改标题长度', 以上操作无忧主机(www.51php.com)小编已经在discuz!x2.5 gbk 最新版本中验证通过,希望上面的操作过程,能够给你带来帮助。感谢你阅读本教程。   纯Linux环境下高端免备案【香港独立IP地址】 php空间,仅仅只需199元一年起。商务中国域名核心代理直销50元注册国际顶级域名

本文地址:https://www.51php.com/discuz/7470.html

1
1
1
1
1
1
1

客户服务热线

0791-8623-3537

在线客服