我是小站长 發表於 2019-6-5 15:15:01

Discuz! X3.4论坛标题字数突破80的限制解决方法

<br /><br />在玩论坛的站长朋友,每次发文章标题都受字数的限制,一直找不到解决的办法,此教程为云墨亲自测试的经验总结,今天就分享给大家。<br />下面由源码专家技术分享解决标题限制80字符方法步骤:<br />一、数据库修改;<br />二、修改JS验证字符数文件;<br />三、修改模板中写死的字符限制数;<br />四,修改函数验证文件;<br />五,修改语言包文件。<br />一、数据库修改,修改数据库标题字段的长度为200字符:运行下面的sql语句:<br />(注意修改你的表的前缀)<ol><li>ALTER TABLE `pre_forum_post` CHANGE `subject` `subject` VARCHAR(200) NOT NULL;<br /><li>ALTER TABLE `pre_forum_rsscache` CHANGE `subject` `subject` char(200) NOT NULL;<br /><li>ALTER TABLE `pre_forum_thread` CHANGE `subject` `subject` char(200) NOT NULL;</ol><br />二、修改JS验证字符数:<br />1、找到文件static/js/forum_post.js的75-81行<br /><ol><li>if(($('postsubmit').name != 'replysubmit' &amp;&amp; !($('postsubmit').name == 'editsubmit' &amp;&amp; !isfirstpost) &amp;&amp; theform.subject.value == &quot;&quot;) || !sortid &amp;&amp; !special &amp;&amp; trim(message) == &quot;&quot;) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; showError('抱歉,您尚未输入标题或内容');<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return false;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} else if(mb_strlen(theform.subject.value) &gt; 80) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; showError('您的标题超过 80 个字符的限制');<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return false;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li></ol>修改为:<br /><ol><li>if(($('postsubmit').name != 'replysubmit' &amp;&amp; !($('postsubmit').name == 'editsubmit' &amp;&amp; !isfirstpost) &amp;&amp; theform.subject.value == &quot;&quot;) || !sortid &amp;&amp; !special &amp;&amp; trim(message) == &quot;&quot;) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; showError('抱歉,您尚未输入标题或内容');<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return false;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} else if(mb_strlen(theform.subject.value) &gt; 200) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; showError('您的标题超过 200 个字符的限制');<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return false;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}</ol><br />2、找到文件sitatic/js/forum.js的212到218行代码:<br /><ol><li>if(theform.message.value == '' || theform.subject.value == '') {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; s = '抱歉,您尚未输入标题或内容';<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; theform.message.focus();<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} else if(mb_strlen(theform.subject.value) &gt; 80) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; s = '您的标题超过 80 个字符的限制';<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; theform.subject.focus();<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}</ol>修改为:<br /><ol><li>if(theform.message.value == '' || theform.subject.value == '') {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; s = '抱歉,您尚未输入标题或内容';<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; theform.message.focus();<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} else if(mb_strlen(theform.subject.value) &gt; 80) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; s = '您的标题超过 80 个字符的限制';<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; theform.subject.focus();<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}</ol><br />三、修改模板中写死的字符限制数:<br />1、找到文件\template\default\forum\post_editor_extra.htm的25到33行:<br /><ol><li>&lt;!--{if $_GET != 'reply'}--&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;span&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; id=&quot;subject&quot; class=&quot;px&quot; value=&quot;$postinfo&quot; {if $_GET == 'newthread'}onblur=&quot;if($('tags')){relatekw('-1','-1'{if $_G['group']['allowposttag']},function(){extraCheck(4)}{/if});doane();}&quot;{/if} onkeyup=&quot;strLenCalc(this, 'checklen', 80);&quot; style=&quot;width: 25em&quot; tabindex=&quot;1&quot; /&gt;&lt;/span&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&lt;!--{else}--&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;span id=&quot;subjecthide&quot; class=&quot;z&quot;&gt;RE: $thread [&lt;a href=&quot;javascript:;&quot; onclick=&quot;display('subjecthide');display('subjectbox');$('subject').value='RE: {echo dhtmlspecialchars(str_replace('\'', '\\\'', $thread))}';display('subjectchk');strLenCalc($('subject'), 'checklen', 80);return false;&quot;&gt;{lang modify}&lt;/a&gt;]&lt;/span&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;span id=&quot;subjectbox&quot; style=&quot;display:none&quot;&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; id=&quot;subject&quot; class=&quot;px&quot; value=&quot;&quot; onkeyup=&quot;strLenCalc(this, 'checklen', 80);&quot; style=&quot;width: 25em&quot; /&gt;&lt;/span&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&lt;!--{/if}--&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&lt;span id=&quot;subjectchk&quot;{if $_GET == 'reply'} style=&quot;display:none&quot;{/if}&gt;{lang comment_message1} &lt;strong id=&quot;checklen&quot;&gt;80&lt;/strong&gt; {lang comment_message2}&lt;/span&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&lt;script type=&quot;text/javascript&quot;&gt;strLenCalc($('subject'), 'checklen', 80)&lt;/script&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &lt;!--{/if}--&gt;</ol>修改为:<br /><ol><li>&lt;!--{if $_GET != 'reply'}--&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;span&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; id=&quot;subject&quot; class=&quot;px&quot; value=&quot;$postinfo&quot; {if $_GET == 'newthread'}onblur=&quot;if($('tags')){relatekw('-1','-1'{if $_G['group']['allowposttag']},function(){extraCheck(4)}{/if});doane();}&quot;{/if} onkeyup=&quot;strLenCalc(this, 'checklen', 200);&quot; style=&quot;width: 25em&quot; tabindex=&quot;1&quot; /&gt;&lt;/span&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&lt;!--{else}--&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;span id=&quot;subjecthide&quot; class=&quot;z&quot;&gt;RE: $thread [&lt;a href=&quot;javascript:;&quot; onclick=&quot;display('subjecthide');display('subjectbox');$('subject').value='RE: {echo dhtmlspecialchars(str_replace('\'', '\\\'', $thread))}';display('subjectchk');strLenCalc($('subject'), 'checklen', 200);return false;&quot;&gt;{lang modify}&lt;/a&gt;]&lt;/span&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;span id=&quot;subjectbox&quot; style=&quot;display:none&quot;&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; id=&quot;subject&quot; class=&quot;px&quot; value=&quot;&quot; onkeyup=&quot;strLenCalc(this, 'checklen', 200);&quot; style=&quot;width: 25em&quot; /&gt;&lt;/span&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&lt;!--{/if}--&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&lt;span id=&quot;subjectchk&quot;{if $_GET == 'reply'} style=&quot;display:none&quot;{/if}&gt;{lang comment_message1} &lt;strong id=&quot;checklen&quot;&gt;200&lt;/strong&gt; {lang comment_message2}&lt;/span&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&lt;script type=&quot;text/javascript&quot;&gt;strLenCalc($('subject'), 'checklen', 200)&lt;/script&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &lt;!--{/if}--&gt;</ol><br />2、找到文件\template\default\forum\forumdisplay_fastpost.htm31-32行:<ol><li>&lt;input type=&quot;text&quot; id=&quot;subject&quot; name=&quot;subject&quot; class=&quot;px&quot; value=&quot;&quot; onkeyup=&quot;strLenCalc(this, 'checklen', 80);&quot; tabindex=&quot;11&quot; style=&quot;width: 25em&quot; /&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;span&gt;{lang comment_message1} &lt;strong id=&quot;checklen&quot;&gt;80&lt;/strong&gt; {lang comment_message2}&lt;/span&gt;</ol>修改为:<br /><ol><li>&lt;input type=&quot;text&quot; id=&quot;subject&quot; name=&quot;subject&quot; class=&quot;px&quot; value=&quot;&quot; onkeyup=&quot;strLenCalc(this, 'checklen', 200);&quot; tabindex=&quot;11&quot; style=&quot;width: 25em&quot; /&gt;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;span&gt;{lang comment_message1} &lt;strong id=&quot;checklen&quot;&gt;200&lt;/strong&gt; {lang comment_message2}&lt;/span&gt;</ol><br />四,修改函数验证提示:<br />找到文件source/function/function_post.php的361-363行:<br /><ol><li>if(dstrlen($subject) &gt; 80) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return 'post_subject_toolong';<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}</ol>修改为:<br /><ol><li>if(dstrlen($subject) &gt; 200) {<br /><li>return 'post_subject_toolong';<br /><li>}</ol><br />五、找到语言包提示文字,打开 source/language/lang_messege.php 并找到998行改为:<br /><ol><li>'post_subject_toolong' =&gt; '抱歉,您的标题超过 80 个字符修改标题长度',</ol>修改为:<br /><ol><li>'post_subject_toolong' =&gt; '抱歉,您的标题超过 200 个字符修改标题长度',</ol><br />教程已全部完成,别忘记到后台——工具——更新一下缓存。<br />下面由源码专家提供修改为做的测试效果:<br /><img id="aimg_HV7M0" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" width="600" height="250" src="http://www.yunmoseo.com/wp-content/uploads/2018/01/20180112182712.png" onmouseover="img_onmouseoverfunc(this)" onclick="zoom(this)" style="cursor:pointer" border="0" alt="" /><br /><img id="aimg_S127r" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" width="600" height="90" src="http://www.yunmoseo.com/wp-content/uploads/2018/01/20180112182801.png" onmouseover="img_onmouseoverfunc(this)" onclick="zoom(this)" style="cursor:pointer" border="0" alt="" />修改<em>, </em>align<em>, </em>标题<em>, </em>限制<em>, </em>img

耗子 發表於 2019-6-7 11:11:49

感谢分享 收藏了

xzaxza 發表於 2019-6-9 08:45:10

收藏了&nbsp;&nbsp;,谢谢<br />

janjou 發表於 2019-6-9 11:39:12

不错!不错!

元归 發表於 2019-6-9 16:37:21

谢谢分享,学习

onetheme 發表於 2019-6-13 20:08:12

感谢分享!

白帆 發表於 2019-6-14 19:02:18

学到了,收藏,谢谢

站长 發表於 2019-6-16 14:32:36

感谢 学习一下

泰然自若 發表於 2019-7-4 11:13:09

这个修改和DZ3.2的分享帖子是一样的吧? <br />http://www.discuz.net/forum.php?mod=viewthread&amp;tid=3594800<br /><br />我这边又按照楼主的修改后,为毛要提示超过150字符??大家有这个情况嘛?不知道这个150哪里来的?语言包都没有这个150?<br /><br /><br /><img title="TIM图片20190704111122.png" id="aimg_957" aid="957" src1="static/image/common/none.gif" zoom="https://www.dismall.com/data/attachment/forum/201907/04/111303kilzhq553hp33y83.png" src="https://www.dismall.com/data/attachment/forum/201907/04/111303kilzhq553hp33y83.png" class="zoom" onclick="zoom(this, this.src, 0, 0, 0)" width="600" inpost="1" onmouseover="showMenu({'ctrlid':this.id,'pos':'12'})" /><br />

ygtxzgs 發表於 2019-7-5 00:50:36

感谢分享 收藏了
頁: [1]
查看完整版本: Discuz! X3.4论坛标题字数突破80的限制解决方法