安静
PHP技术博客

130409 discuz 修改标题长度 2.0 版

utf-8 字符串下页面的标题 缩JJ的长度 只剩下 80/3=26 个汉字了 不过   其实26个也不算短了 MJJ的觉得还是不够用。 随要求可以 修改 长度 。

做个简单的 修改 完成了 此次的  ticket:

 

//缩JJ 的  在mysql中存储 不管是中文还是英文还是  中文又区分 gbk 或者utf-8 之类的  varchar 都算1个字符 
在其他存储的时候  utf-8 中文字节是3个字节  gbk中文是2个字节  我们再这里稍微的调皮的  改动了下 计算内容的长度 代码 就可以了。
好这真的不是恶搞。

//bbs/static/js/common.js 
function strLenCalc(obj, checklen, maxlen) {
        var v = obj.value, charlen = 0, maxlen = !maxlen ? 200 : maxlen, curlen = maxlen, len = strlen(v);
        for(var i = 0; i < v.length; i++) {
                if(v.charCodeAt(i) < 0 || v.charCodeAt(i) > 255) {
                        curlen -= charset == 'utf-8' ? 1 : 1;
                }
        }
        if(curlen >= len) {
                $(checklen).innerHTML = curlen - len;
        } else {
                obj.value = mb_cutstr(v, maxlen, 0);
        }
}

// bbs/source/function/function_core.php 
function dstrlen($str) {
        if(strtolower(CHARSET) != 'utf-8') {
                return strlen($str);
        }
        $count = 0;
        for($i = 0; $i < strlen($str); $i++){
                $value = ord($str[$i]);
                if($value > 127) {
                        $count++;
                        if($value >= 192 && $value <= 223) $i++;
                        elseif($value >= 224 && $value <= 239) $i = $i + 2;
                        elseif($value >= 240 && $value <= 247) $i = $i + 3;
                }
                //$count++;
        }
        return $count;
}




下面转载个我调研的关于 discuz 修改标题长度的方法:

数据库操作:
pre_forum_thread
pre_forum_post
的字段  subject
ALTER TABLE tablename MODIFY subject varchar(200);

文件修改
1、/source/function/fuction_post.php 
   修改函数checkpost($subject,$message, $special = 0)
   在该函数中查找
   if(strlen($subject) > 80) {
    return 'post_subject_toolong';
    }

2、/source/language/lang_message.php
   修改 'post_subject_toolong' => '对不起,你的标题超过80个字符,请返回修改标题长度。'

3、/static/js/forum_post.js
   修改函数validate(theform)
   查找   elseif(mb_strlen(theform.subject.value) > 80) {
             showDialog('您的标题超过 80 个字符的限制');
             returnfalse;
            }


4、template/default/forum/post.htm
   查找:onkeyup="strLenCalc(this,'checklen', 80);"
   {lang comment_message1}80{lang comment_message2}


更老版本

include/post.func.php
include/javascript/post_editor.js
modcp/editposts.inc.php
default/viewthread.htm
default/forumdisplay.htm
default/templates.lang.php
default/messages.lang.php

赞(0) 打赏
未经允许不得转载:AJ's Blog » 130409 discuz 修改标题长度 2.0 版
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏