×

คำเตือน

JFolder::create: Path not in open_basedir paths.

หลังจาก Joomla! 3.0 Alpha-1 ออกมาทดลองติดตั้งและใช้งานดู โดยความรู้สึกคิดว่าทำงานได้เร็วกว่า 2.5 นะครับ แต่สิ่งที่เปลี่ยนแปลงหลักๆ คือต้องใช้ PHP 5.3 เท่านั้น และมีกาีรใช้งาน Joomla! Platform รุ่น 12.1 ซึ่งต่างจาก Joomla! 2.5 ที่ใช้ PHP 5.2 และ Platform รุ่น 11.4 ซึ่งทำให้มีผลกระทบต่อการเขียนคอมโำพเนนท์หลายส่วน แต่อย่าเพิ่งตกใจไปสำหรับผู้ใช้เพราะว่านี่คือ Short Term Support ที่มีอายุเพียงสั้นๆ เนื่องจาก Long Term Support รุ่นต่อไปคือ Joomla! 3.5 นะครับ

สำหรับนักพัฒนาคอมโพเนนท์บน Joomla! 2.5 เองก็ยังพอมีข่าวดีครับ แต่ขอแจ้งข่าวร้ายก่อนก็คือว่าคอมโพเนนท์ที่เขียนบน Joomla! 2.5 ไม่สามารถใช้งานได้บน Joomla! 3.0 นะครับ เนื่องจากคลาส MVC ต่างๆ เปลี่ยนไปอย่าง JController และ JView นี่เหลือเพียงแค่เป็น Interface เท่านั้นครับ แต่คลาสเดิมๆ เหล่านี้ยังใช้ได้ครับแต่ต้องเปลี่ยนชื่อเป็น JControllerLegacy JViewLegacy และ JModelLegacy แทน แต่ในส่วนของคลาสที่ไม่ได้สืบทอดโดยตรงจากคลาสเหล่านี้ไม่มีผลกระทบครับเช่น JControllerAdmin JControllerForm เป็นต้น อ้อ JTable ยังอยู่เหมือนเดิมครับ

แต่เราสามารถเขียนคลาสต่างๆ ให้สามารถใช้งานได้ทั้งบน 2.5 และ 3.x นะครับ โดยในกลุ่ม MVC ก็เปลี่ยนคลาสต่างๆ มาเป็น Legacy คลาสแทนครับ 

สำหรับตัวคอมโพเนนท์ใน Joomla! เองเช่น แบนเนอร์ ก็ยังไม่ได้ย้ายไปใช้ New MVC นะครับเราสามารถดูเป็นตัวอย่างได้ และสามารถดูรายละเอียดของการเปลี่ยนแปลงได้จากที่นี่ครับ สำหรับการ port คอมโำพเนนท์เบื้องต้นโดยการใช้ Legacy Support บน Joomla! 3.0 มีดังนี้ครับ

  1. ใน master component เปลี่ยน JController::getInstance() เป็น JControllerLegacy::getInstance()
  2. ใน default หรือ master controller เปลี่ยน extends JController เป็น extends JControllerLegacy
  3. ในคลาสทุกคลาสของ view เช่น view.html.php เปลี่ยน extends JView เป็น extends JViewLegacy
  4. ถ้ามีการใช้งาน JModel โดยตรงก็ต้องเปลี่ยนเป็น JModelLegacy ครับ
  5. ใน Joomla 3.0 นี้จะไม่มีค่าคงที่ DS แล้วนะครับ ถ้าต้องการใช้ก็ใช้ DIRECTORY_SEPARATOR แทนครับ สำหรับผมก็ใช้ define('DS',DIRECTORY_SEPARATOR) ในไฟล์ master component เลยครับ
  6. มีฟังก์ขันหลายๆ ตัวที่ต้องเปลี่ยน หรือหาวิธีการทดแทนเช่น JHtmlImage นี่ผมยังหาตัวแทนไม่เจอครับ
  7. ในส่วนของหลังบ้านจะมีการเปลี่ยนแปลงในส่วนของ CSS ที่แตกต่างกันระหว่างจูมล่า 2.5 และ จูมล่า 3.x เนื่องจากใน 3.x จะใช้ Twitter Bootstrap ไงครับ 
  8. นอกจากนี้ในส่วนของหน้าที่แสดงฟอร์มก็มีรูปแบบที่เปลี่ยนไปนะครับในส่วนหลังบ้าน รวมทั้งการแสดง Submenu ด้วย
  9. หน้าแสดงรายการก็มีการเปลี่ยนแปลงไปใช้งาน JLayout ซึ่งเป็นฟีเจอร์ใหม่สำหรับจูมล่า 3.x ที่ทำให้สามารถแชร์ตัวเลเอาท์ระหว่างคอมโพเนนท์ได้

สำหรับบทความนี้ยังไม่จบครับ ผมขอทดลอง port ตัวคอมโพเนนท์บางตัวก่อนแล้วจะมาอัพเดตกันอีกทีครับ

comments