×

คำเตือน

JFolder::create: Path not in open_basedir paths.

สำหรับบทความในตอนนี้จะเริ่มเข้าสู่ตัวอย่างของการเขียนตัวปลั๊กอิน หลังจากที่เราได้แนะนำการทำงานของปลั๊กอินในจูมล่าไปแล้ว ถ้าท่านที่ยังไม่เข้าใจเรื่องการทำงานของปลั๊กอินก็กลับไปอ่านดูก่อนนะครับ สำหรับตัวปลั๊กอินนั้นถ้าเข้าใจการทำงานของมันตามเหตุการณ์แล้ว การเขียนโค๊ดนั้นไม่ยากครับ ไม่เหมือนกับการเขียนคอมโพเนนท์

ตัวปลั๊กอินที่เราจะเขียนในชุดของบทความนี้ ลองจินตนาการว่าเรามีฐานข้อมูลของผู้ใช้ที่เก็บอยู่บน MSSQL Server ซึ่งมีชื่่อผู้ใช้ รหัสผ่าน และ อีเมลสำหรับใช้ในการตรวจสอบผู้ใช้ซึ่งใช้อยู่ในเว็บอื่นๆ เช่นบทอินทราเน็ตเป็นต้น ถ้าจะต้องใช้จูมล่าเพิ่มอิีกตัวแล้วต้องมาให้ผู้ใช้สมัครใหม่ สร้างชื่อและรหัสผ่านใหม่ก็คงจะโดนบ่นเป็นแน่ ดังนนั้นจุดมุ่งหมายก็คือเราต้องการที่จะใช้ข้อมูลชุดนี้แหละครับสำหรับให้ผู้ใช้ทำการล็อกอินเข้าใช้งาน แล้วสามารถทำได้โดยไม่ต้องสร้างข้อมูลผู้ใช้บนจูมล่าเลยนะครับ จูมล่าจะสร้างข้อมูลให้เองเมื่อทำการล็อกอินสำเร็จ เราแค่ต้องเข้าไปกำหนดสิทธิในการใช้งานเท่านั้นครับ น่าสนใจมั๊ยครับ

สำหรับในตัวปลั๊กอินผมจะแสดงการเชื่อมต่อกับ MSSQL จากจูมล่าโดยการใช้คลาส JDatabase ของจูมล่าด้วยนะครับ ดังนั้นการเชื่อมต่อของเราก็จะง่ายมากๆ เลยครับ และเราจะได้เห็นการเชื่อมต่อฐานข้อมูลภายนอกจากจูมล่า CMS ด้วย

วางแผนกันก่อน

ก่อนที่จะเขียนตัวปลั๊กอินเราต้องมาวางแผนก่อนครับว่า เราต้องเขียนปลั๊กอินจับกับเหตุการณ์อะไร อยู่ในกลุ่มไหน ซึ่งเป็นสิ่งจำเป็นมากที่จะต้องเลือกให้ถูก สำหรับตัวนี้ก็ค่อนข้างงายครับ เพราะถ้าเราดูในโฟลเดอร์ของปลั๊กอินเราก็จะเจอ authentication ซึ่งเป็นกลุ่มของปลั๊กอินที่จูมล่าจะทำการเรียกใช้เพื่อให้ทำการตรวจสอบผู้ใช้แล้วส่งผลกลับว่าสำเร็จหรือไม่ สำหรับเหตุการณ์ก็ลองดูตัวอย่างของจูมล่าก็ได้ครับ ในโฟลเดอร์ plugins/authentication/joomla.php ซึ่งเป็นปลั๊กอินที่ทำหน้าที่ในการตรวจสอบข้อมูลผู้ใช้สำหรับจูมล่าจากฐานข้อมูลของจูมล่าเอง มันชื่อ onUserAthenticate($credentials, $options, &$response) โดยพารามีเตอร์ตัวแรกคือข้อมูลผู้ใช้และรหัสผ่านที่ส่งมาจากการที่ผู้ใช้พิมพ์ตอนล็อกอิน ตัวที่สามคือตัวผลที่เราจะต้องกำหนดให้กับบจูมล่าว่าล็อกอินผ่านหรือไม่

ขั้นตอนการสร้างปลั๊กอิน

เมื่อได้หลักการการทำงาน รวมทั้งกลุ่มของปลั๊กอินแล้ว เราก็จะมาสู่ขั้นตอนการพัฒนาปลั๊กอินกันแล้วครับ หลักการของผมจะง่ายๆ ตามนี้ครับ

  1. กำหนดชื่อปลั๊กอินต้องไม่ซ้ำกับใครนะครับ โดยเฉพาะในกลุ่ม เนื่องจากกลุ่มของปลั๊กอินก็คือชื่อของโฟลเดอร์สำหรับกรณีนี้ลองเปิดดูในโฟลเดอร์ plugins/authentication ครับจะมีโฟลเดอร์ย่อยๆ อยู่หลายตัวนั่นคือ ปลั๊กอินในกลุ่มสำหรับการทำ Authentication หรือการพิสูจน์ตัวตนของผู้ใช้ นั่นก็คือชื่อโฟลเดอร์ก็คือชื่อปลั๊กอินครับ ในที่นี้ผมจะให้ชื่่อว่า mssql
  2. ทำการสร้างโฟลเดอร์ mssql ภายใต้ plugins/authentication/
  3. สร้างไฟล์ต่างๆ ดังนี้คือ
    • ไฟล์ index.html เป็นไฟล์ที่ใส่ไว้เพื่อป้องกันการ Browse โฟลเดอร์
    • ไฟล์ mssql.php เป็นไฟล์หลักที่เก็บโค้ดของปลั๊กอิน
    • ไฟล์ mssql.xml เป็นไฟล์ XML ที่อธิบายการติดตั้ง และการกำหนดค่าตัวแปรต่างๆ ที่จะให้ผู้ใช้ทำการตั้งค่า
  4. ใส่เนื้อหาในไฟล์ mssql.xml
  5. ทำการล็อกอินเข้าสู่หลังบ้านของเว็บไซต์ที่เราทำการพัฒนาตัวปลั๊กอิน ไปที่ Extension Manager 
  6. เลือกแท็บ Discover แล้วทำการ Purge Cache ทิ้ง ทำการ Discover เพื่อให้จูมล่าทำการค้นหาปลั๊กอินของเรา
  7. เมื่อพบแล้วเราจะเห็นข้อมูลต่างๆ ที่แสดงซึ่งยังไม่มีการแปลภาษา เราสามารถทำการแปลภาษาได้ตามข้อที่ 8
  8. เพิ่มโฟลเดอร์ language ในโฟลเดอร์ mssql หรือโฟลเดอร์ของปลั๊กอินของเรานั่นเอง
  9. เพิ่มโฟลเดอร์ en-GB ในโฟลเดอร์ language
  10. เพิ่มไฟล์ en-GB.plg_authentication_mssql.sys.ini และ en-GB.plg_authentication_mssql.ini โดยหลักการตั้งชื่อไฟล์คือ ตัว plg_<กลุ่ม>_<ชื่อปลํ๊กอิน>.<นามสกุลไฟล์> โดยนามสกุล .sys.ini เป็นการแปลภาษาที่ใช้งานโดยจูมล่าเช่นในตัว Extension Manager อย่างที่เราเห็น ส่วน .ini จะใช้ในการแปลภายในตัวปลั๊กอินเอง (ระหว่างการทำงานของปลั๊กอิน)
  11. ทำซ้ำข้อ 5 และ 6 คือการ Purge Cache และทำการ Discover อีกครั้ง เมื่่อได้ผลอย่างที่ต้องการแล้วก็ทำการติดตั้งโดยการคลิก Install
  12. ทำการพัฒนาโค้ดในไฟล์ mssql.php และทำการทดสอบตัวปลั๊กอิน
  13. เมื่อได้ผลการทดสอบอย่างที่ต้องการแล้ว ทำการคัดลอกโฟลเดอร์ mssql ออกมาเพื่อทำ package ติดตั้ง

ขั้นตอนคร่าวๆ ก็มีเท่านี้ครับ ในตอนต่อไป เขียนปลั๊กอินตรวจสอบผู้ใช้โดยใช้ฐานข้อมูล MSSQL ตอนที่ 2 ผมจะมาเจาะในรายละเอียดในไฟล์ mssq.php และ ไฟล์ mssql.xml กัน อย่าลืมติดตามนะครับ

 

 

comments