การเขียน plugin เสริมความสามารถของ CB (Community Builder) ซึ่ง CB เป็น Component ของ Joomla ที่ได้รับความนิยมมาก

ก่อนอื่นต้องเกริ่นก่อนนะครับ บทความนี้ไม่ใช่บทความที่สอน สร้าง plugin ของ core ของ Joomla
สำหรับท่านที่ยังไม่รู้ จัก CB ดูได้ที่เว็บนี้เลยครับ http://www.joomlapolis.com
Plugin ของ Community Builder คืออะไร
 มันคือส่วนเสริมความสามารถของ Community Builder ที่จะไเชื่อมกับระบบอื่นๆ หรือ เพิ่มความสามารถของตัวเอง โดยที่ Developer ไม่ต้องไปแก้ไขโค้ด ของโปรแกรม (เป็นแนวคิดในการเขียนโปรแกรมที่ดีมาก Core ของ Joomla เองก็มีระบบนี้ และเขียนได้ง่ายกว่า ผมเลยไม่ได้เขียนเป็นบทความไว้)
จะเขียน Plugin ของ Community Builder ต้องรู้อะไรบ้าง
1.ต้องรู้ว่า ระบบเปิดให้เราเสริมลงไปได้ตรงไหน บ้าง 
  ดูได้จาก โค้ด
   

$_PLUGINS->trigger( 'onLoginAuthentication',....

นี่คือรวม trigger

//Community Builder
onBeforeEmailUserForm
onAfterEmailUserForm
onBeforeUserProfileEditDisplay
onAfterUserProfileEditDisplay
onBeforeUserProfileRequest
onBeforeUserProfileDisplay
onAfterUserProfileDisplay
onBeforeDisplayUsersList
onLostPassForm
onBeforeLoginFormDisplay
onBeforeRegisterFormDisplay
onBeforeEmailUser
onBeforeUserAvatarUpdate
onAfterUserAvatarUpdate
onStartUsersList
onAfterUsersListFieldsSql
onBeforeUsersListBuildQuery
onBeforeUsersListQuery
onStartNewPassword
onBeforeUsernameReminder
onAfterUsernameReminder
onBeforeNewPassword
onNewPassword
onBeforeRegisterForm
onStartSaveUserRegistration
onAfterUserRegistrationMailsSent
onBeforeLogin
onLoginAuthentication
onDuringLogin
onBeforeFirstLogin
onDoLoginNow
onAfterLogin
onBeforeLogout
onDoLogoutNow
onAfterLogout
onBeforeUserConfirm
onAfterUserConfirm
onBeforeUserApproval
onAfterUserApproval
onBeforeUserApproval
onBeforeBackendUsersListBuildQuery
onAfterBackendUsersList
onBeforeUserBlocking
onBeforeSyncUser
onAfterSyncUser
onAfterCheckCbDb
onAfterCheckCbFieldsDb
onBeforeFixDb
onAfterFixDb
onBeforeFixFieldsDb
onBeforeUserActive
onUserActive
onBeforeDeleteUser
onAfterDeleteUser
onAfterTabsFetch
onPrepareMenus
onAfterEditATab
onAfterFieldsFetch
onBeforeAddConnection
onAfterAddConnection
onBeforeRemoveConnection
onAfterRemoveConnection
onBeforeDenyConnection
onAfterDenyConnection
onBeforeAcceptConnection
onAfterAcceptConnection
onFieldIcons
onLogChange
onBeforeUserUpdate
onBeforeNewUser
onBeforeUpdateUser
onBeforeUserRegistration
onSaveUserError
onAfterUserUpdate
onAfterNewUser
onAfterUpdateUser
onAfterUserRegistration
onBeforegetFieldRow

//Community Builder Captcha
onGetCaptchaHtmlElements

//Community Builder Subscriptions
onCPayUserStateChange

2. สร้าง ไฟล์ติดตั้ง plugin โดยภายใน จะประกอบด้วย 3 ไฟล์ คล้ายๆ กับการสร้าง plugin ของ Joomla
เช่น
1.mindphp.php   สำหรับเก็บคำสั่งการทำงาน
2.mindphp.xml  สำหรับเก็บโครงสร้างตัวติดตั้ง
3.index.html ไฟล์ว่างเปล่าไม่ต้องใส่โค้ดใดๆ
เสร็จแล้ว ก็ zip ไฟล์

3.ตัวอย่างรายละเอียดภายในไฟล์ mindphp.xml

<?xml version="1.0" encoding="UTF-8"?>
<cbinstall version="1.0" type="plugin" group="user">
    <name>Acc Pal  check  User status</name>
    <author>mindphp</author>
    <creationDate>2009-09-28</creationDate>
    <copyright>(C) 2005-2009 mindphp.com</copyright>
    <license>http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU/GPL version 2</license>
    <authorEmail>[email protected]</authorEmail>
    <authorUrl>www.mindphp.com</authorUrl>
    <version>1.0</version>
    <description>Provides Check User Status</description>
    <files>
        <filename plugin="acc_check_status">acc_check_status.php</filename>
        <filename>index.html</filename>
    </files>
</cbinstall>

4.ตัวอย่างไฟล์ mindphp.php ต้องมีโครงสร้าง ตามนี้
ประกาศโค้ดนี้ที่ต้นไฟล์

global $_PLUGINS;
$_PLUGINS->registerFunction( 'TRIGGER', 'FUNCTION', 'CLASS' );

 

รวมตัวอย่างโค้ด

if ( ! ( defined( '_VALID_CB' ) || defined( '_JEXEC' ) || defined( '_VALID_MOS' ) ) ) { die( 'Direct Access to this location is not allowed.' ); }
 
global $_PLUGINS;
$_PLUGINS->registerFunction( 'onAfterLogin', 'confirmLogin', 'getconfirmTab' );
 
class getconfirmTab extends cbTabHandler {
function confirmLogin( $user, $$loggedIn ) {
if ( loggedIn ) {
echo 'Welcome!' . $user->username;
}
}
}

5. zip แล้วเอาไป install ที่ CB Plugin Manager ได้เลย

ไฟล์ ตัวอย่างโหลดได้ที่บอร์ด เลยครับ

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
แนะนำการเดินทางและสถานที่ท่องเที่ยวในจังหวัดตรังและการเดินทางไปกรุงเทพ
โดย wightfall จ 22 เม.ย. 2024 3:41 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
20
จ 22 เม.ย. 2024 3:41 pm โดย wightfall View Topic แนะนำการเดินทางและสถานที่ท่องเที่ยวในจังหวัดตรังและการเดินทางไปกรุงเทพ
ติดตั้ง ESXi ใหม่ จำเป็นต้อง Format Harddisk ก่อนติดตั้งไหมครับ
โดย จิ๊กโก๋ ส 20 เม.ย. 2024 2:29 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
3
145
อ 23 เม.ย. 2024 2:24 pm โดย mindphp View Topic ติดตั้ง ESXi ใหม่ จำเป็นต้อง Format Harddisk ก่อนติดตั้งไหมครับ
แจ้งปัญหาโพสบทความลงในเว็บบอร์ดส่วนตัวไม่ได้
โดย internTk21 ศ 19 เม.ย. 2024 11:56 am บอร์ด MindPHP News & Feedback
1
46
ศ 19 เม.ย. 2024 12:15 pm โดย internTk21 View Topic แจ้งปัญหาโพสบทความลงในเว็บบอร์ดส่วนตัวไม่ได้
สอบถาม Google Structure ที่เหมาะกับคอร์สเรียนควรใช้แบบไหนดีค่ะ
โดย eange08 ศ 19 เม.ย. 2024 9:56 am บอร์ด Programming - PHP
1
80
ศ 19 เม.ย. 2024 10:28 am โดย mindphp View Topic สอบถาม Google Structure ที่เหมาะกับคอร์สเรียนควรใช้แบบไหนดีค่ะ
คำสั่งรวมไฟล์ และ บีบอัดในคำสั่งเดียว tar, zip
โดย mindphp พ 17 เม.ย. 2024 7:42 pm บอร์ด Linux - Web Server
0
123
พ 17 เม.ย. 2024 7:42 pm โดย mindphp View Topic คำสั่งรวมไฟล์ และ บีบอัดในคำสั่งเดียว  tar, zip
เช็คขนาดพื้นที่ฐานข้อมูล แต่ละก้อน แต่ละฐานข้อมูลว่าใช้พื้นที่ไปเท่าไหร่ ด้วย Comamnd Line
โดย mindphp จ 15 เม.ย. 2024 11:10 pm บอร์ด PostgreSQL
1
299
จ 15 เม.ย. 2024 11:14 pm โดย mindphp View Topic เช็คขนาดพื้นที่ฐานข้อมูล แต่ละก้อน แต่ละฐานข้อมูลว่าใช้พื้นที่ไปเท่าไหร่ ด้วย Comamnd Line
การติดตั้ง WSL เพื่อใช้งาน Linux Terminal บน Windows
โดย tsukasaz ศ 12 เม.ย. 2024 2:25 pm บอร์ด Share Knowledge
0
317
ศ 12 เม.ย. 2024 2:25 pm โดย tsukasaz View Topic การติดตั้ง WSL เพื่อใช้งาน Linux Terminal บน Windows
Super Сasual Dating - Real Women
โดย heroxbay ศ 12 เม.ย. 2024 8:55 am บอร์ด Microsoft Office Knowledge & line & Etc
0
259
ศ 12 เม.ย. 2024 8:55 am โดย heroxbay View Topic Super Сasual Dating - Real Women