Discuz! X3 论坛标题字数突破80的限制

清泛原创

当一些用户发布帖子的时候 标题要是超过了80个字符超出的部分被剪切掉了,特别是一些用户发送一些英文或其他其语言的文章的时候标题说甚至会超过180个字符,又特别论坛编码是UTF-8格式,因为一个字占3个字节,所以标题最长也就26个汉字,很多用户想修改这个80个字符的限制


想去掉这个字数限制,要从下面五个部分来修改:
一、修改数据库subject字段的长度,默认都是char(80);
二、修改JS验证字符数文件;
三、修改模板中写死的字符限制数;
四,修改函数验证文件;
五,修改语言包文件。
修改的文件一览如下(数据库修改 _forum_post_forum_rsscache_forum_thread 这三张表):
 

下面详细介绍如何修改:
一、数据库修改,修改数据库标题字段的长度为255字符:运行下面的sql语句:
(注意修改你的表的前缀,还有修改前一定要备份!!!
ALTER TABLE `pre_forum_post` CHANGE `subject` `subject` varchar(255) NOT NULL;
ALTER TABLE `pre_forum_rsscache` CHANGE `subject` `subject` varchar(255) NOT NULL;
ALTER TABLE `pre_forum_thread` CHANGE `subject` `subject` varchar(255) NOT NULL;
(以前是char类型现在干脆一步到位全部改为varchar类型,灵活省空间,经测试OK。)

二、修改JS验证字符数
static/js/forum_post.js
 
(仅截图2处)

sitatic/js/forum.js
 
(仅截图2处)

三、修改模板中写死的字符限制数
template\default\forum\post_editor_extra.htm
 
(一共5处)

修改后代码:
<div class="z">
                <!--{if $_GET[action] == 'reply' && !empty($_GET['addtrade']) || $_GET[action] == 'edit' && $thread['special'] == 2 && !$postinfo['first']}-->
                        <input name="subject" type="hidden" value="" />
                <!--{else}-->
                        <!--{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} onkeyup="strLenCalc(this, 'checklen', 255);" style="width: 25em" tabindex="1" /></span>
                        <!--{else}-->
                                <span id="subjecthide" class="z">RE: $thread[subject] [<a href="javascript:;" onclick="display('subjecthide');display('subjectbox');$('subject').value='RE: {echo dhtmlspecialchars(str_replace('\'', '\\\'', $thread[subject]))}';display('subjectchk');strLenCalc($('subject'), 'checklen', 255);return false;">{lang modify}</a>]</span>
                                <span id="subjectbox" style="display:none"><input type="text" name="subject" id="subject" class="px" value="" onkeyup="strLenCalc(this, 'checklen', 255);" style="width: 25em" /></span>
                        <!--{/if}-->                        
                        <span id="subjectchk"{if $_GET[action] == 'reply'} style="display:none"{/if}>{lang comment_message1} <strong id="checklen">255</strong> {lang comment_message2}</span>
                        <script type="text/javascript">strLenCalc($('subject'), 'checklen', 255)</script>
                <!--{/if}-->
                <!--{if $_GET[action] == 'newthread' && $modnewthreads}--> <span class="xg1 xw0">({lang approve})</span><!--{/if}-->
                <!--{if $_GET[action] == 'reply' && $modnewreplies}--> <span class="xg1 xw0">({lang approve})</span><!--{/if}-->
                <!--{if $_GET[action] == 'edit' && $isfirstpost && $thread['displayorder'] == -4}--> <span class="xg1 xw0">({lang draft})</span><!--{/if}-->
        </div>
template\default\forum\forumdisplay_fastpost.htm
 
(一共2处)

修改后代码:
<input type="text" id="subject" name="subject" class="px" value="" onkeyup="strLenCalc(this, 'checklen', 255);" tabindex="11" style="width: 25em" />
                                <span>{lang comment_message1} <strong id="checklen">255</strong> {lang comment_message2}</span>
四,修改函数验证提示
source/function/function_post.php
 
(仅截图一处)

五、找到语言包提示文字,打开 source/language/lang_messege.php
 
(仅截图一处)


OK,你再发表帖子标题就可以是255个字符数了!!!

Discuz 标题字数 限制

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部