สมัครชื่อภาษาไทยให้ยาวๆๆ ใน Discuz X2
แก้ไขครั้งสุดท้ายโดย thaifeed เมื่อ 2012-2-9 11:53พอดีผมเพิ่งลองใช้ Discuz นะครับ มีอะไรผิดพลาดก็ขออภัยล่วงหน้าด้วยนะครับ
พอดีผมอยากทำให้สมัครชื่อภาษาไทยยาว ๆ ได้ ก็เลยลองหาข้อมูลจากบอร์ดนี้ ก็ได้ตามลิ้งค์ด้านล่าง
http://forum.discuzthai.com/forum.php?mod=viewthread&tid=21719&page=1
http://forum.discuzthai.com/forum.php?mod=viewthread&tid=26940&page=1
ลองดูแล้วก็ยังไม่ได้ผลเพราะว่ามันใช้กับ 1.5 ก็เลยลอง งม ๆ เอง ก็จะได้การแก้ไขดังต่อไปนี้นะครับ
1. source/class/class_member.php
ค้นหา >>} elseif($usernamelen > 15) {แก้เลข15เป็น ตัวเลขความยาวที่ต้องการเช่น 200
2. source/module/forum/forum_ajax.php
ค้นหา >>elseif($usernamelen > 15)แก้เลข15เป็น ตัวเลขความยาวที่ต้องการเช่น 200
3. static/js/register.js
ค้นหา >>if(unlen < 3 || unlen > 15) {แก้เลข15เป็น ตัวเลขความยาวที่ต้องการเช่น 200
4. template/default/member/register.htm
ค้นหา >>maxlength="15"แก้เลข15เป็น ตัวเลขความยาวที่ต้องการเช่น 200
5. uc_server/model/user.php
uc_client/model/user.php
ค้นหา >>if($len > 15 || $len < 3 || แก้เลข15เป็น ตัวเลขความยาวที่ต้องการเช่น 200
6. แก้ไขตัวเลข username ในฐานข้อมูล pre_common_members และ pre_ucenter_members
แก้เลข15เป็น ตัวเลขความยาวที่ต้องการเช่น 200
เท่าที่ลองแล้วได้ผลนะครับ สมัครได้ ใช้งานได้ แต่ไม่แน่ใจจะมีปัญหาอื่นตามมาหรือไม่ ยังไงก็ช่วยชี้แนะด้วยนะครับ
แก้ไขครั้งสุดท้าย 2012-5-6 18:15 โดย bonparadorn
แก้ไขครั้งสุดท้าย 2012-5-6 18:05 โดย bonparadorn
แก้ไขครั้งสุดท้าย 2012-5-6 18:04 โดย bonparadorn
ความยาว 15 เหมาะแล้วครับ แต่ปัญหาคือภาษาไทย utf-8 ใช้พื้นที่ 3ไบท์ แม้ฟังชั่น function dstrlen($str) ของDiscuz
จะช่วยแล้ว แต่ผมอ่านๆดูแล้วเป็นการช่วยแบบจีน ควรเปลี่ยนฟังชั่นนี้จาก strlen($string) เป็น
mb_strlen($string, 'utf-8')
และเปลี่ยนเงื่อนไขอักษรบนล่างใหม่ของเดิมเป็นเงื่อนไขแบบจีน เป็น
if(!( $ascii == 209 ||($ascii >= 212 && $ascii <= 218 ) || ($ascii >= 231 && $ascii <= 238 )))
.....
...
บู้อี้ << จะมีค่าแค่2 function strlenth($str)
{
$arr = str_split($str);
$count = 0;
foreach($arr as $val)
{
$ascii = ord($val);
if(!( $ascii == 209 ||($ascii >= 212 && $ascii <= 218 ) || ($ascii >= 231 && $ascii <= 238 )))
$count += 1;
}
return $count;
}มันไปติดที่ผมเขียน java ไม่เป็น ไม่งั้นคงจะช่วยได้มากกว่านี้ครับ
เวิคที่สุด ให้ input รับมา 15 อักษร แล้วแก้ไขฟังชั้นข้างในเป็น 45 ให้หมดครับ ต้องแก้ดาต้าเบสด้วย char(45) เพื่อสละบนล่าง จริงหรอครับขอบคุณมาก ขอบคุณครับ
หน้า:
[1]