立即注册 找回密码

168资源分享社区

查看: 9658|回复: 0

Discuz论坛修改贴子标题长度限制的方法

[复制链接]

163

主题

163

帖子

2099

积分

超级会员

Rank: 6Rank: 6

积分
2099
发表于 2020-12-12 13:35:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我们在使用Discuz论坛的时候有时候一篇文章标题的长度很长发布以后程序自动就给截断了,可那不见后面的标题内容,这样体验很不好,因为Discuz论坛本身标题字符限制在80个字符,所以我们要修改一下。


一、环境

Discuz 3.4

二、更改方法

本文将帖子标题的字符长度限制为最长180个字符。

执行sql语句前,最好先备份下数据库:

# mysqldump -u root -p Discuz > Discuz.sql
  • 1

(Discuz表示Discuz所使用的数据库名,Discuz.sql是备份出来的文件)

登陆mysql:

# mysql -u root -p
  • 1

(如果mysql的root账号没有设置密码,在提示输入密码的时候,直接回车即可。)

切换到Discuz所使用的数据库:

MariaDB [(none)]> use Discuz;
  • 1

执行以下3条sql语句,修改为180个字符的限制:

MariaDB [Discuz]> ALTER TABLE `pre_forum_post` CHANGE `subject` `subject` VARCHAR(180) NOT NULL;MariaDB [Discuz]> ALTER TABLE `pre_forum_rsscache` CHANGE `subject` `subject` char(180) NOT NULL;MariaDB [Discuz]> ALTER TABLE `pre_forum_thread` CHANGE `subject` `subject` char(180) NOT NULL;
  • 1
  • 2
  • 3

注意:MariaDB [Discuz]> 是提示符,输入sql语句的时候不要将其输入。

修改JS验证字符数,先备份文件:

# cp 网站目录/static/js/forum_post.js 网站目录/static/js/forum_post.js_bak
  • 1

更改forum_post.js文件内容

# vi 网站目录/static/js/forum_post.js
  • 1

查找到以下字符

else if(mb_strlen(theform.subject.value) > 180) {                showError('您的标题超过 180 个字符的限制');                return false;
  • 1
  • 2
  • 3

把80改成180(标红色的字符)。保存文件,退出。

修改JS验证字符数,备份文件:

# cp 网站目录/static/js/forum.js 网站目录/static/js/forum.js_bak
  • 1

编辑forum.js文件:

# vi 网站目录/static/js/forum.js
  • 1

查找到如下内容:

theform.message.focus();} else if(mb_strlen(theform.subject.value) > 180) {        s = '您的标题超过 180 个字符的限制';        theform.subject.focus();
  • 1
  • 2
  • 3
  • 4

把80改成180(标红色的字符)。保存文件,退出。

修改模板中字符限制数,先备份文件:

# cp 网站目录/template/default/forum/post_editor_extra.htm 网站目录/template/default/forum/post_editor_extra.htm_bak
  • 1

编辑post_editor_extra.htm文件:

# vi 网站目录/template/default/forum/post_editor_extra.htm
  • 1

替换所有的80为180,保存文件,退出。

修改模板中字符限制数,备份文件:

# cp 网站目录/template/default/forum/forumdisplay_fastpost.htm 网站目录/template/default/forum/forumdisplay_fastpost.htm_bak
  • 1

编辑forumdisplay_fastpost.htm文件:

# vi 网站目录/template/default/forum/forumdisplay_fastpost.htm
  • 1

替换所有的80为180,保存文件,退出。

修改函数验证提示,备份文件:

# cp 网站目录/source/function/function_post.php 网站目录/source/function/function_post.php_bak
  • 1

编辑function_post.php文件:

# vi 网站目录/source/function/function_post.php
  • 1

查找到以下字符:

if(dstrlen($subject) > 180) {                return 'post_subject_toolong';
  • 1
  • 2

把80改成180(标红色的字符)。保存文件,退出。

找到语言包提示文字,备份文件:

# cp 网站目录/source/language/lang_message.php 网站目录/source/language/lang_message.php_bak
  • 1

编辑lang_message.php文件:

# vi 网站目录/source/language/lang_message.php
  • 1

查找到如下内容:

'post_subject_toolong' => '抱歉,您的标题超过 180 个字符修改标题长度',把80改成180(标红色的字符)。保存文件,退出。
  • 1
  • 2

打开Discuz主页,以管理员(admin)身份登陆。点击页面右上方的 管理中心:

更新缓存就可以生效了。

方法二.

想测试修改论坛标题字数限制,需要从下面五个部分来修改:
(除数据库外,代码部分均只需修改其中的数值即可,其它代码可略过)

一、数据库修改;
二、修改JS验证字符数文件;
三、修改模板中写死的字符限制数;
四,修改函数验证文件;
五,修改语言包文件。

现以把标题字符限制80修改为120为例子,描述一下修改方法:

一、数据库修改,修改数据库标题字段的长度为120字符:运行下面的sql语句:
(注意修改你的表的前缀)

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;
复制代码

二、修改JS验证字符数:
1、找到文件static/js/forum_post.js的74-80行

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;
        }
复制代码

2、找到文件sitatic/js/forum.js的209到215行代码:
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();
        }
复制代码

三、修改模板中写死的字符限制数:
1、找到文件\template\default\forum\post_editor_extra.htm的24到32行:
<!--{if $_GET[action] != 'reply'}-->
<span><input type="text" name="subject" id="subject" class="px" value="$postinfo[subject]" {if $_GET[action] == 'newthread'}onblur="if($('tags')){relatekw('-1','-1'{if $_G['group']['allowposttag']},function(){extraCheck(4)}{/if});doane();}"{/if}#0000ff">80);" style="width: 25em" tabindex="1" /></span>
<!--{else}-->
<span id="subjecthide" class="z">RE: $thread[subject] [<a href="javascript:;"#0000ff">80);return false;">{lang modify}</a>]</span>
<span id="subjectbox" style="display:none"><input type="text" name="subject" id="subject" class="px" value=""FONT-WEIGHT: bold; COLOR: #0000ff">80);" style="width: 25em" /></span>
<!--{/if}-->
<span id="subjectchk"{if $_GET[action] == 'reply'} style="display:none"{/if}>{lang comment_message1} <strong id="checklen">80</strong> {lang comment_message2}</span>
<script type="text/javascript">strLenCalc($('subject'), 'checklen', 80)</script>
<!--{/if}-->
复制代码

修改为下面代码:
<!--{if $_GET[action] != 'reply'}-->
<span><input type="text" name="subject" id="subject" class="px" value="$postinfo[subject]" {if $_GET[action] == 'newthread'}onblur="if($('tags')){relatekw('-1','-1'{if $_G['group']['allowposttag']},function(){extraCheck(4)}{/if});doane();}"{/if}#ff0000">120);" style="width: 25em" tabindex="1" /></span>
<!--{else}-->
<span id="subjecthide" class="z">RE: $thread[subject] [<a href="javascript:;"#ff0000">120);return false;">{lang modify}</a>]</span>
<span id="subjectbox" style="display:none"><input type="text" name="subject" id="subject" class="px" value=""FONT-WEIGHT: bold; COLOR: #0000ff">120);" style="width: 25em" /></span>
<!--{/if}-->
<span id="subjectchk"{if $_GET[action] == 'reply'} style="display:none"{/if}>{lang comment_message1} <strong id="checklen">120</strong> {lang comment_message2}</span>
<script type="text/javascript">strLenCalc($('subject'), 'checklen', 120)</script>
<!--{/if}-->
复制代码

2、找到文件\template\default\forum\forumdisplay_fastpost.htm31-32行:
<input type="text" id="subject" name="subject" class="px" value=""#0000ff">80);" tabindex="11" style="width: 25em" />
<span>{lang comment_message1} <strong id="checklen">80</strong> {lang comment_message2}</span>
复制代码

修改为:
<input type="text" id="subject" name="subject" class="px" value=""#0000ff">120);" tabindex="11" style="width: 25em" />
<span>{lang comment_message1} <strong id="checklen">120</strong> {lang comment_message2}</span>
复制代码

四,修改函数验证提示:
找到文件source/function/function_post.php的346-348行:
if(dstrlen($subject) > 80) {
return 'post_subject_toolong';
}
复制代码

修改为:
if(dstrlen($subject) > 120) {
return 'post_subject_toolong';
}
复制代码

五、找到语言包提示文字,打开 source/language/lang_messege.php 并找到985行改为:
  'post_subject_toolong' => '抱歉,您的标题超过 120 个字符修改标题长度',
复制代码

复制代码
OK,你再发表帖子标题就可以是120个字符数了!!!当然如果120也不够用,比如想改为150,把红色字体的120改为150即可。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|购买友情链接|168资源分享社区

JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!

GMT+8, 2021-1-23 05:41 , Processed in 0.269137 second(s), 39 queries .

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc & 标签

快速回复 返回顶部 返回列表