|
[技术讨论]
Discuz论坛修改开发笔记 增加主题标题字符上限
1#
发表于 2014-12-7 08:35:53
|
查看: 7267 |
回复: 10
对坛娘一直有一个地方不太满意就是主题的80个字符上限 虽然限制字符上限对数据储存量有好处
但是如果有一些资源主题需要较长的后设就会比较麻烦了 有时候也不太利于网站SEO
那么今天就开始对论坛文件做了修改调整 目的是将主题标题允许的长度提升1倍
以下几个文件为本次修改主要会进行更改的:
./source/function/function_post.php (业务逻辑文件,加入数据库时进行第三次确认,如果最终提交的数据长度超出设置则返回错误)
./static/js/forum_post.js (前端控制JS限制输入时的长度,输入时进行第一次确认)
./static/js/forum.js (另一个前端控制JS)
./templates/default/forum/post_editor_extra.htm (编辑器模板,输入的标题数据会在按下发布进行第二次确认 PS:如果当前使用的模板中有这个文件则改当前模板中的)
首先说明Discuz程序的标题长度设定为80个英文字符(也就是40个汉字长度) 这个设置是基于数据库的构造来设定的
所以首先需要将数据库的构造进行调整(这个调整不会对网站功能造成其余任何特效)
如果懂得如何直接访问数据库进行修改的话 那么就直接访问 pre_forum_thread 表 以及 pre_forum_post 表 对其中的 subject 字段结构进行修改
将长度由80改为需要的数值(一个汉字为2个长度,目前需要加长到80个汉字所以改为160)
如果无法进入数据库或者不会操作数据库的 也有一个方法就是程序自带的功能
首先打开保险设置 将 ./config/config_global.php 中的 $_config[admincp][runquery] 设置为 1
然后进入后台 - 站长 - 数据库 - 升级 在升级语句中输入
- ALTER TABLE `pre_forum_thread` CHANGE `subject` `subject` CHAR( 160 );
- ALTER TABLE `pre_forum_post` CHANGE `subject` `subject` CHAR( 160 );
复制代码 就能直接完成本次的数据库修改了 为了防止以后误操作或者后台被入侵的可能性造成数据库损坏修改后务必将 $_config[admincp][runquery] 改回 0
下面打开./source/function/function_post.php
查找
- if(dstrlen($subject) > 80)
复制代码 改为
- if(dstrlen($subject) > 160)
复制代码
打开./templates/default/forum/post_editor_extra.htm
查找
改为
一共4处
打开./static/js/forum_post.js
查找
- } else if(mb_strlen(theform.subject.value) > 80) {
- showError('您的标题超过 80 个字符的限制');
复制代码 改为
- } else if(mb_strlen(theform.subject.value) > 160) {
- showError('您的标题超过 160 个字符的限制');
复制代码
打开./static/js/forum.js
查找
- if(mb_strlen(theform.subject.value) > 80) {
- s = '您的标题超过 80 个字符的限制';
复制代码 改为
- if(mb_strlen(theform.subject.value) > 160) {
- s = '您的标题超过 160 个字符的限制';
复制代码
保存以后更新缓存即可完全生效 如果后期对程序版本升级 可能会造成以上修改被新文件覆盖 需要重新进行此操作
升级时也会自动对数据库构造进行恢复 所以如果准备升级程序版本的话 就升级完再调整比较好
|
Char听到一声清脆的响声,低头发现了 13 枚 星币
|