【实测】修改DZ论坛发帖子时帖子标题的长度(80字符)提示限制及内容说明-Discuz教程下载

【实测】修改DZ论坛发帖子时帖子标题的长度(80字符)提示限制及内容说明

来自版块: Discuz教程发表于: 2015-7-18 00:37:58
57803
0
如本资源下载地址失效,请点击此处进行反馈
开通本站Svip会员,全站资源免费下
一个很烦人的问题,帖子标题长度(字数)有限制,源码从康盛官方论坛查了相关资料,是有80个字符的限制。换句话说,你在编辑帖子标题的时候,只能有80个字符,超过了就不显示了。这是一个蛋疼的问题,80个字符长度的帖子标题,怎么能满足论坛达人的需求类?如果你用的是Discuz!x2.5 UTF8版本,那就更揪心了,因为utf8版本,一个汉字算3个字节,也就是26个汉字。是不是有点崩溃的感觉?还好,这种问题,不是一个人遇到,在官方论坛上,也有许多人问如何取消或加长默认标题长度。很高兴,这个问题已经有完美的解决方案,兔源码这里就借花献佛,与大家共享这个案例。

目的:将discuz论坛标题长度限制80字符,增加到限制200字符。
兔源码温馨提示:论坛代码修改有风险,网站备份要先行。网站整站备份,请你参考:网站整站一键备份与恢复


工具要顺利完成代码的修改,一个好用工具不可少,强烈推荐使用文本编辑器(editplus),不推荐使用记事本进行编辑修改。
方向:我们要把discuz论坛标题字数(长度)限制80字符,增加到限制200字符,修改过程中,要涉及:mysql数据库、js验证文件数、修改函数验证、模版中定义的字符限制数量、语言包文件合计五个文件。同志们,工作量巨大繁琐,要仔细认真哦。我们操作前对网站进行一个整站备份是非常有必要的。


把discuz!论坛标题长度限制80字符,增加到限制200字符的详细操作步骤和说明:
1、Mysql数据库修改。
这里我们直接执行sql查询语句来完成,请你直接把下面的sql语句直接复制,到phpmyadmin工具中的sql语句执行窗口,执行即可。
如果你不知道如何登录无忧php虚拟主机的phpmyadmin工具,请你直接点击 “phpmyadmin数据库管理工具的使用说明”查询。
  1. ALTER TABLE `pre_forum_post` CHANGE `subject` `subject` VARCHAR(200) NOT NULL;
  2. ALTER TABLE `pre_forum_rsscache` CHANGE `subject` `subject` char(200) NOT NULL;
  3. ALTER TABLE `pre_forum_thread` CHANGE `subject` `subject` char(200) NOT NULL;
复制代码
2、修改JS文件:
我们要这里要修2个JS文件一个是forum_post.js和forum.js。详细修改如下:

A、修改js验证字符数文件:static/js/forum_post.js
使用文本编辑器editplus打开计算文件forum_post,查找定位在约77行处,做如下修改:
源文件:
  1. if(($('postsubmit').name != 'replysubmit' && !($('postsubmit').name == 'editsubmit' && !isfirstpost) && theform.subject.value == "") || !sortid && !special && trim(message) == "") {
  2.                 showError('抱歉,您尚未输入标题或内容');
  3.                 return false;
  4.         } else if(mb_strlen(theform.subject.value) > 80) {
  5.                 showError('您的标题超过 80 个字符的限制');
  6.                 return false;
复制代码
修改替换为:
  1. if(($('postsubmit').name != 'replysubmit' && !($('postsubmit').name == 'editsubmit' && !isfirstpost) && theform.subject.value == "") || !sortid && !special && trim(message) == "") {
  2.                 showError('抱歉,您尚未输入标题或内容');
  3.                 return false;
  4.         } else if(mb_strlen(theform.subject.value) > 200) {
  5.                 showError('您的标题超过 200 个字符的限制');
  6.                 return false;
复制代码
B、修改目录:sitatic/js/forum.js
使用文本编辑器editplus打开计算文件forum.js,查找定位在约212行处,做如下修改:
源代码:
  1. } else if(mb_strlen(theform.subject.value) > 80) {
  2.                 s = '您的标题超过 80 个字符的限制';
  3.                 theform.subject.focus();
  4.         }
复制代码
修改替换为:
  1. } else if(mb_strlen(theform.subject.value) > 200) {
  2.                 s = '您的标题超过 200 个字符的限制';
  3.                 theform.subject.focus();
  4.         }
复制代码
3、修改模版中定义的字符限制数量:
在discuz模版中,有一句代码限制了帖子标题字符数,这是我们必须要修改的,让其支持更长的帖子标题。修改文件为:post_editor_extra.htm和forumdisplay_fastpost.htm

A、post_editor_extra.htm路径目录:/template/default/forum/
使用文本编辑器editplus打开计算文件post_editor_extra.htm,查找定位在约28行处,做如下修改:
源代码如下:
  1. <span id="subjectchk"{if $_GET[action] == 'reply'} style="display:none"{/if}>{lang comment_message1} <strong id="checklen">80</strong> {lang comment_message2}</span>
复制代码
修改替换为:
  1. <span id="subjectchk"{if $_GET[action] == 'reply'} style="display:none"{/if}>{lang comment_message1} <strong id="checklen">200</strong> {lang comment_message2}</span>
复制代码

B、forumdisplay_fastpost.htm路径目录:\template\default\forum\forumdisplay_fastpost.htm
使用文本编辑器editplus打开计算文件forumdisplay_fastpost.htm,查找定位在约32行处,做如下修改:
源代码:
  1.     <input type="text" id="subject" name="subject" class="px" value="" onkeyup="strLenCalc(this, 'checklen', 80);" tabindex="11" style="width: 25em" />
  2.                                 <span>{lang comment_message1} <strong id="checklen">80</strong> {lang comment_message2}</span>
复制代码
修改替换为:
  1.     <input type="text" id="subject" name="subject" class="px" value="" onkeyup="strLenCalc(this, 'checklen', 200);" tabindex="11" style="width: 25em" />
  2.                                 <span>{lang comment_message1} <strong id="checklen">200</strong> {lang comment_message2}</span>
复制代码
4、修改函数验证
修改一个验证函数(function_post.php)文件,这个非常重要,这里也对帖子标题长度做了限制,我们只需要修改限制长度即可。
function_post.php路径目录:source/function/function_post.php
使用文本编辑器editplus打开计算文件post_editor_extra.htm,查找定位在约345行处,做如下修改:
源代码:
  1. if(dstrlen($subject) > 80) {
  2.                 return 'post_subject_toolong';
  3.         }
复制代码
修改为:
  1. if(dstrlen($subject) > 200) {
  2.                 return 'post_subject_toolong';
  3.         }
复制代码
5、修改语言包
当会员编辑帖子标题的时候,如果超过定义的长度,那么系统就会友好的提示您,帖子标题长度太长了,这个地方虽然不是必须的,通过前面4个地方的修改,我们已经可以达到了我们的目的了,但是为了用户体验,我们必须要继续修改Discuz的语言包,请语言包(lang_messege.php)中关于超过标题长度的系统提示修改正确。

lang_messege.php路径目录:source/language/lang_messege.php
使用文本编辑器editplus打开计算文件lang_messege.php,查找定位在约988行处找到代码:
  1.   'post_subject_toolong' => '抱歉,您的标题超过 80 个字符修改标题长度',
复制代码
修改为
  1.   'post_subject_toolong' => '抱歉,您的标题超过 200 个字符修改标题长度',
复制代码



全部评论 0

您需要登录后才可以回帖 立即登录
登录
0
0
0
返回顶部