อาทิตย์, กุมภาพันธ์ 05, 2555
   
Text Size
ป้ายโฆษณา

การแสดงปี พ.ศ. ใน Joomla! 1.5

( 3 Votes )

โดยปกติแล้ว สำหรับ Site ที่เป็นภาษาไทยทั้งหลายมีอยู่สิ่งหนึ่งที่คิดว่าคงจะรบกวนความรู้สึกของ WebMaster พอสมควรนั่นก็คือการแสดงปี พ.ศ. ในวันที่แทนที่จะเป็น ค.ศ. ก็ในเมื่อ Joomla! รองรับการแสดงผลแบบหลายภาษา รวมทั้งมีการแปลศัพท์ต่างๆ เป็นภาษาไทยแล้วทำไมไม่ทำตรงนี้ด้วยล่ะ จริงๆ แล้ว Joomla! 1.5 มี Features ที่รองรับการแสดงวันที่ในรูปแบบต่างๆกัน ซึ่งผมเรียกว่า JDate Override ครับ ซึ่งเป็นวิธีการที่รองรับโดย Joomla Framework นั่นคือการ upgrade ตัว Joomla จะไม่มีผลกระทบกับ code ในส่วนนี้ ในบทความนี้ผมจะนำเสนอการแสดงวันที่ในรูปแบบ พ.ศ. สำหรับการใช้งาน JDate Override กันครับ การใช้งาน JDate Override ในที่นี้มีข้อจำกัดนิดนึงตรงที่ตัว Component หรือ Module นั้นจะต้องเขียน Code ในรูปแบบที่รองรับการทำ JDate Override ด้วยนะครับไม่งั้นมันก็ไม่ Work เหมือนกัน แต่สำหรับพวก content หรือบทความต่างๆ นี้รองรับในจุดนี้อยู่แล้วนะครับ และในส่วนของ Component หรือ Module โดยส่วนใหญ่ก็น่าจะรองรับเหมือนกัน

ขั้นตอนการทำ JDate Override สำหรับภาษาไทย (th-TH)
สำหรับการทำ JDate Override หรือการแสดงปี พ.ศ. ใน Joomla! 1.5 นี้ ผมขออนุมานว่าทุกท่านได้ทำการติดตั้งไฟล์ ภาษาไทย สำหรับ Frontend แล้วนะครับหากท่านยังไม่ได้ติดตั้งก็เข้าไป download ได้ที่ JoomlaCorner.com ครับ 
1. ทำการ download ไฟล์ที่ทำหน้าที่ในการแปลงปี คศ เป็น พ.ศ.ได้จาก หน้า download icon ไฟล์สำหรับการแสดงปี พ.ศ. แทน ค.ศ. (1.86 kB 2009-07-06 17:39:20)
2. ทำการ unzip ไฟล์คุณจะได้ไฟล์ชื่อ th-TH.date.php ถ้าต้องการให้แสดงตัวเลขในวันที่เป็นตัวเลขไทย ต้องแก้ไฟล์นิดนึงก่อนนะครับ คือการแก้ตามรูปด้านล่างครับ

การแก้ไข th-TH.date.php ให้ใช้เลขไทย
3. ทำการ upload ไฟล์ไปไว้ใน directory ชื่อ [JOOMLA_ROOT]/language/th-TH/ โดย [JOOMLA_ROOT คือตำแหน่งที่คุณติดตั้ง Joomla! ครับ

ลองเรียกหน้า Content ที่มีการแสดงวันที่เช่น front page ในส่วนของวันที่ต่างๆ เช่นวันที่สร้างบทความ หรือแก้ไขบทความ ว่าแสดงผลถูกต้องหรือไม่ โดยรูปแบบวันที่เหล่านี้จะอยู่ในไฟล์ th-TH.ini ใน folder ในข้อสามด้านบน ถ้าแสดงไม่ถูกต้องปกติมันจะแสดงเป็น %X ออกมานะครับ แสดงว่ามันแปล code ของรูปแบบไม่ถูก อันนี้มีสองสาเหตุครับ คือ รูปแบบไม่ถูกต้องตาม syntax ของ PHP (strftime) หรือไม่ก็ class JDateth_TH ไม่รองรับ ยังไงก็ post ไว้นะครับ

Component หรือ Module ที่รองรับ JDate Override
1. Component com_content ของ Joomla!
2. Attachment Module

ในส่วนการใช้งานของทาง Joomlant.com เช่นใน mod_kunenalatest ทางที่มงานได้ทำการแก้ไขให้รองรับการทำ JDate Override สำหรับท่านใดที่ต้องการก็ post ไว้ได้ครับ

 

 

สำหรับโปแกรมเมอร์ที่ต้องการพัฒนา extension ให้รองรับการทำ JDate Override ก็ไม่มีอะไรซับซ้อนครับ หรือหากท่านใดที่ต้องการแก้การ display ให้รองรับตรงส่วนนี้ก็ทำได้นะครับ โดยหลัการก็คือท่าต้อง get JDate object จาก JFactory ของ Joomla! เท่านั้นเองครับ เพราะการ Override นี้เกิดใน JFactory class ของ Joomla! ครับ วิธีการก็เป็นดังตัวอย่างครับ

ตัวอย่างการเขียน code ให้รองรับ JDate Override

ตัวอย่างนี้เป็นตัวอย่างจาก mod_kunenalatest ในไฟล์ helper.php นะครับ บรรทัดที่ 225 ที่ถูก comment ไว้คือ code เดิมของ module ในที่นี้ผู้เขียนเพิ่ม code ไปสามบรรทัดคือการ 222-224 จะเห็นว่าในบรรทัดที่ 223 เราทำการ load object ของ JDate จาก JFactory ตามที่กล่าวไว้ด้านบน ซึ่งเราทำการส่งค่า Time Offset โดยการ load จาก config ของ Site สำหรับ $date_format เป็น parameter ของ Kunena Module ในที่นี้ผู้เขียน config ใหม่ให้เป็นรูปแบบของ PHP คือ %d/%m/%Y %H:%i ก็จะแสดงปี พ.ศ. ได้แล้วครับ (ดูผลจากหน้าแรกของ Site ครับ)

ปล ตัวไฟล์เริ่มต้นของ th-TH.date.php นี้ทาง Joomlant.com ได้มาจาก Joomla Community นะครับ เพียงแต่มาปรับแก้เล็กน้อยเท่านั้น

JoomlaWatch Stats 1.2.8b_12-dev by Matej Koval
Restore Default Settings