×

คำเตือน

JFolder::create: Path not in open_basedir paths.

เริ่มต้นเขียนจูมล่าโมดูล (2.5/3.2)-ตอนที่ 1

สำหรับนักพัฒนามือใหม่ที่ยังไม่ชำนาญทั้ง PHP และจูมล่า จูมล่าโมดูลน่าจะเป็นส่วนขยายที่ง่ายที่สุดที่จะเริ่มต้น ไม่ต้องเขียนโค้ดมากมาย ใช้เวลาไม่นานก็ได้ชิ้นงานแล้วครับ วันนี้เราจะมาดูกันว่าถ้าจะพัฒนาจูมล่าโมดูลจะมีขั้นตอนอะไรบ้าง และเพื่อไม่ให้บทความยาวและเยิ่นเย้อเกินไป ผมจะแบ่งเป็นตอนๆ อาจจะซัก 2-3 ตอนนะครับ ก็สามารถติดตามและให้คำแนะนำกันได้ครับ

อ่านเพิ่มเติม...

การแสดงผลและการเก็บข้อมูลวันที่ในจูมล่า

สำหรับการเขียนโค๊ดที่เป็น Open Source ที่มีการใช้งานในหลายๆ Time Zone นั้น ปัญหาหนึ่งที่ผมเจอก็คือเรื่องการเก็บข้อมูลและการแสดงผลวันที่และเวลา ซึ่งจากประสบการณ์การพัฒนา JONGman สำหรับใช้เป็นระบบจองทรัพยากรต่างๆ มีการใช้งาน Date Time เป็นองค์ประกอบหลัก หลังจากผ่านการทดลองและการได้รับการแบ่งปันจากผู้รู้หลายๆ ท่าน โดยเฉพาะจากบทความของ Andrew Eddie ตามลิงค์นี้นะครับ ผมก็พอที่จะได้หลักในการทำงานกับวันที่ ซึ่งจริงๆก็ไม่จำเป็นว่าจะต้องเป็นเฉพาะจูมล่าเท่านั้น สามารถใช้ไ้ด้ทั่ไป ดังนี้นเพื่อให้หลักการเหล่านี้ได้มีการนำไปใช้งานอย่างถูกต้องและช่วยประหยัดเวลาของเราในการทำงาน และการใช้งานจูมล่าผมจึงขอนำเสนอโดยอิงหลักของ Andrew Eddie เป็นหลัก

การจัดเก็บวันที่และเวลาในไทม์โซน GMT

มีข้อดีที่มองเห็นได้ชัดในการเก็บเวลาในไทม์โซน (time zone) GMT คือเรื่องของการย้ายเซอร์ฟเวอร์ไงครับ ลองสมมุติว่าถ้าเราเก็บข้อมูลของเป็นเวลาประเทศไทย คือ GMT+7 แล้วเรามีการย้ายเซอร์ฟเวอร์ เราก็ต้องเปลี่ยนเป็นไทม์โซนตัวใหม่ แล้วเท่าที่ทราบในข้อมูลของวันที่และเวลาอย่างใน MySQL ก็ไม่ได้มีไทม์โซนแปะไว้นะครับ ดังนั้นเราก็อาจจะสับสนได้เวลาที่ต้องนำมาใช้งาน ดังนั้นในการเก็บข้อมูลวันที่และเวลาก็ต้องทำการแปลงไไทม์โซนเป็น GMT ก่อนเก็บลงฐานข้อมูลซึ่งจูมล่ามีคลาสที่ให้เราใช้งานได้อย่างสะดวกสบายครับ

อ่านเพิ่มเติม...

การใช้ฟอร์มจาก Backend ใน Frontend

หากเรามีการพัฒนาตัวคอมโพเนนท์สำหรับ Joomla! 2.5 มาซักพักนึง เราจะเห็นว่าปกติแล้วเราต้องมีการสร้างไฟล์ XML สำหรับการใช้่งานฟอร์มทั้งทางด้านหน้า (Frontend) และ ด้านหลัง (Backend) ซึ่งบางครั้งมันก็มีความซ้ำซ้อนอยู่เหมือนกัน ดังนั้นวันนี้ผมจะมานำเสนอแนวทางในการใช้งานไฟล์ XML ในส่วนของ Backend ในการเขียนโค้ดในส่วนของ Frontend ซึ่งมีข้อดีดังนี้

  1. ลดความซ้ำซ้อน และงานในการ Coding ลง
  2. แก้ไขฟอร์มจากที่เดียวคือ Backend

เนื่องจากปกติเราจะตั้งชื่อไฟล์ Model ดังนี้คือ <ComponentName>Model<Entity> ซึ่งจะเหมือนกันทั้ง Frontend และ Backend ดังนั้นในกรณีนี้เราจะตั้งชื่อตัว Model ในส่วนของ Frontend เป็น <ComponentName>Model<Entity>form แทนเพื่อให้แตกต่างจากเดิม ซึ่งจะทำให้เราสามารถสร้างคลาสของ Frontend นี้โดยการ extends หรือสิบทอดจาก Backend ได้เพื่อที่เราจะได้ใช้ฟอร์มจาก Backedn ได้เลยไงครับ

อ่านเพิ่มเติม...

การแปลภาษาสำหรับ JavaScript

javascriptหลังจากที่ผมไม่ได้ปรับปรุงเพิ่มเติมบทความมาซักพัก วันนี้เลยขอแก้ตัวด้วยบทความสั้นๆ สำหรับนักพัฒนาจุมล่า 1.6+ ทั้งหลายนั่นคือการแปลข้อความใน JavaScript ของเรา ปกติการเขียนคอมโพเนนท์เพื่อรองรับการใช้งานหลายๆ ภาษาเรามักจะเจอปัญหานี้ว่า กรณีเราจะให้แสดงภาษาใน JavaScript เป็นภาษาของผู้ใช้ในขณะนั้นทำอย่างไร ปกติเราอาจจะไม่ค่อยได้เขียนในลักษณะนี้มากนัก หากเราเขียนเพื่อใช้งานในองค์กร แต่หากเราเขียน open source และเราต้องการให้รองรับการใช้งานหลายๆ ภาษาเราจะเจอปัญหานี้

ตัวอย่างการใช้งาน

ตัวอย่างการใช้งานเช่นในโค้ด PHP ของจุมล่าเรามีข้อความ คือ COM_REGONLINE_DEMO_TEXT ที่เราต้องการแสดงผลในภาษาอังกฤษว่า "Test Text" ในภาษาไทยว่า "ข้อความทดสอบ" ถ้าใน PHP เราก็แค่เอาข้อความนี้แสดงว่าฟังก์ชั้น JText::_() คือ JText::_('COM_REGONLINE_DEMO_TEXT') แล้วก็เอาข้อความนี้ไปแปลในไฟล์ภาษาคือ

อ่านเพิ่มเติม...

ประโยชน์ของ Discover ใน Joomla! 1.6+ สำหรับ Programmer

Discover feature in Joomla! 1.6+ใน Joomla! ตั้งแต่รุ่น 1.6 ขึ้นไปในส่วนของการจัดการการติดตั้งมีคุณสมบัติหรือ feature ใหม่เพิ่มขึ้นมานั่นก็คือ Discover ซึ่งทำให้คุณสามารถทำการติดตั้ง Joomla! extension ได้โดยไม่จำเป็นต้องติดตั้งจากไฟล์ zip โดย Joomla! จะทำการค้นหาใน folder แล้วทำการติดตั้งให้เองหากเจอไฟล์ xml ที่ใช้สำหรับการติดตั้ง สำหรับการใช้งานสำหรับ webmaster ก็อาจจะใช้ประโยชน์ในกรณีที่การติดตั้งผ่านไฟล์ zip อาจจะใช้เวลานานเนื่องจากไฟล์มีขนาดใหญ่ ดังนั้นการ FTP ไฟล์ที่ผ่านการ unzip แล้วไปไว้บน server แล้วค่อยใช้การ discover จะทำให้แก้ปัญหานี้ได้ครับ แต่ในวันนี้เราจะมาดูการใช้ Discover ในตอนพัฒนา component ของเรากันครับ

 

อ่านเพิ่มเติม...

มีอะไรใหม่ใน Joomla! 1.6 Controller

Joomla! 1.6 Releasedหลังจากที่ Joomla! 1.6 รุ่น Stable ได้ออกมาแล้วอย่างเป็นทางการ ก็เริ่มมีเสียงเรียกร้องจากกลุ่มผู้ใช้ JONGman สำหรับการใช้งานบน Joomla! 1.6 จึงได้เริ่มหันมา port ตัว JONGman 1.0 มาเป็น JONGman 2.0 สำหรับ Joomla! 1.6 ซึ่งก็ได้สัมผัสการใช้งานจริงๆ ถึงการปรับปรุงในส่วนของ MVC Pattern ทีใช้ในการพัฒนา extension สำหรับ Joomla! 1.6 หลังจากที่ก่อนๆ เคยได้แค่ฟังเขาเล่าว่าในทีม Joomla! Bug Squad (JBS) ซึ่งก็มี Concept หลายๆอย่างที่มีการเปลี่ยนแปลงให้มีรูปแบบมากขึ้น ซึ่งข้อมูลเหล่านี้บางส่วนได้จาก Lead Team Member ของ Joomla! บางส่วนก็จากการศึกษา code ของตัว Component ต่างๆ แต่ใน Joomla! Component ต่างๆ ยังเป็นแบบพื้นๆ ยังไม่ค่อยเห็นการประยุกต์ใช้งานมากเท่าไร

ในส่วนของ Component ต่างๆ ใน Joomla! 1.6 จะได้รับการปรับปรุงให้เป็นแบบ MVC มากขึ้น โดย Component ตัวอย่างที่ใช้เป็นรูปแบบได้ก็คือ Banners และ WebLinks สำหรับในบทความนี้ผมจะพูดถึงการเปลี่ยนแปลงรูปแบบในส่วนของ Controller และ Component Dispatcher กัน

อ่านเพิ่มเติม...