admins โพสต์ 2012-5-21 21:29:21

แก้ปัญหาความยาวของชื่อกระทู้ ให้นับตัวอักษรไทยเป็น 1 ตัวอักษร และมีความยาว 80 ตัวอักษรไทย

โปรดสำรองไฟล์ทุกไฟล์ที่แก้ไข - ไม่รับผิดชอบต่อความเสียหายที่เกิดขึ้นทุกกรณี

โดยปกติแล้ว ใน Discuz เวอร์ชั่นก่อน สมาชิกหลายท่านคงแก้ไขด้วยการเพิ่มความยาวของชื่อกระทู้เป็น 250 ตัวอักษร
และแก้ฐานข้อมูล เพราะใน Discuz นับตัวอักษรเป็น 3 ไบท์ เมื่อเราใส่ตัวอักษรไทย 80 ตัวอักษร discuz จะนับเป็น 240 ตัวอักษร

วันนี้อย่างแชร์อีกวิธีการที่สะดวกกว่า โดยใช้ความยาว 80 ตัวอักษรเท่าเดิม แต่จะแก้ให้ Discuz นับตัวอักษรไทย แค่ 1 ไบท์
ทำให้เราใช้ชื่อเป็นภาษาไทยได้ยาว 80 ตัวอักษรจริงๆ...

ตัวอย่าง
http://i.imgur.com/q8hWF.jpg




admins โพสต์ 2012-5-21 21:29:41

แก้ไขครั้งสุดท้าย 2012-5-21 21:34 โดย admins

static/js/common.js

#แก้ไขให้นับตัวอักษรไทยเป็น 1 ตัวอักษร จากปกตินับเป็น 3 ตัวอักษร
ค้นหาและลบ      for(var i = 0; i < v.length; i++) {
                if(v.charCodeAt(i) < 0 || v.charCodeAt(i) > 255) {
                        curlen -= charset == 'utf-8' ? 2 : 1;
                }
      }แก้ไข                obj.value = mb_cutstr(v, maxlen, 0);
เป็นobj.value = obj.value.substr(v, maxlen);

admins โพสต์ 2012-5-21 21:30:45

static\js\forum_post.js

ค้นหา} else if(mb_strlen(theform.subject.value) > 80) {
แก้ไข} else if(theform.subject.value.length > 80) {

admins โพสต์ 2012-5-21 21:31:13

source\function\function_core.php

ค้นหาfunction dstrlen($str) {
      if(strtolower(CHARSET) != 'utf-8') {
                return strlen($str);
      }เพิ่มด้านล่าง      return mb_strlen($str,'utf-8');
ค้นหาและลบออก      $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;
ค้นหาfunction cutstr($string, $length, $dot = ' ...') {
      if(strlen($string) <= $length) {
แก้เป็นfunction cutstr($string, $length, $dot = ' ...') {
      if(dstrlen($string) <= $length) {

admins โพสต์ 2012-5-21 21:33:17

ชื่อบอร์ด ให้ยาว 50 ตัวอักษรไทย
source\admincp\admincp_forums.php

ค้น                if(strlen($_GET['namenew']) > 50) {
แก้เป็น                if(dstrlen($_GET['namenew']) > 50) {

Tumn โพสต์ 2012-5-25 18:52:45

ขอบคุณมากๆครับ {:9986gag:}

jamskung โพสต์ 2012-5-28 20:06:21

ขอบคุณครับ ; )

jaideejung007 โพสต์ 2012-5-31 18:26:35

แก้ไข เยอะมากครับ

เวลาอัพแพทช์ครั้งใหม่ คงมานั่งไล่โค๊ดกันอีกยาว

ขอบคุณสำหรับทริปดีๆ ครับ น่าเอาไปสานต่อครับ

abeerclup โพสต์ 2012-6-4 18:33:29

ขอบคุณมากนะครับก็ดีเหมือนกันนะครับแต่เวลามีแพทใหม่มานั่งแก้โค้ตอีกคิคิ

amnad.111 โพสต์ 2012-6-7 19:25:09

sm907dzsm907dzsm907dzsm907dz

แล้วถ้าจะให้ชื่อกระทู้แสดงที่หน้าที่ต้องการทั้งหมด (DIY) แบบไม่ตัดคำ ต้องปรับอะไรบ้าง...ขอรับ

sm898dzsm898dzsm898dzsm898dzsm898dz
หน้า: [1] 2
ดูในรูปแบบกติ: แก้ปัญหาความยาวของชื่อกระทู้ ให้นับตัวอักษรไทยเป็น 1 ตัวอักษร และมีความยาว 80 ตัวอักษรไทย