การสร้าง Component สำหรับ Joomla 3 เขียน คอมโพเน้นท์ ใช้เอง

ในบทวามนี้จะเป็นการแนะนำการสร้าง Joomla Component ที่สามารถเรียกใช้งานได้หลาย Controllers ในตัวอย่างนี้จะมี Controller อยู่สองตัวคือ A และ B

สำหรับมือใหม่แนะนำให้อ่านเรื่อง OOP และ ควรมีความรู้เรื่อง MVC
1. สร้างโฟลเดอร์ชื่อ com_hellocomponent (ต้องขึ้นต้นด้วย com_ และตามด้วยชื่อของ Component)

2. สร้างไฟล์ ที่จำเป็นในการใช้ Component Joomla 

2.1 สร้างไฟล์ hellomindphp.php ซึ่งจะเป็นไฟล์เริ่มต้นสำหรับเรียกใช้ Component (ต้องตั้งชื่อไฟล์ให้ตรงกับชื่อ Component)

สร้างโฟลเดอร์ในส่วนของ site หรือ front end com_hellocomponent และไฟล์ hellocomponent.php
สร้างโฟลเดอร์ com_hellocomponent และไฟล์ hellocomponent.php

 

Code ของไฟล์ hellomindphp.php

<?php
/**
 * @package	HelloComponent
 * @subpackage	com_hellocomponent
 * @author	Mindphp Developer Teams
 * @copyright	Copyright (C) 2021 Mindphp. All rights reserved..
 * @license	GNU General Public License version 2 or later;
 */
defined('_JEXEC') or die();

JHtml::_('behavior.tabstate');


$controller = JControllerLegacy::getInstance('HelloComponent');
$controller->execute(JFactory::getApplication()->input->get('task'));
$controller->redirect();

 

 คำอธิบายการทำงานของโค้ด

  1. defined('_JEXEC') or die;​
    ป้องกันการเรียกใช้งานไฟล์แบบตรง ๆ
  2. $controller = JControllerLegacy::getInstance('Hellocomponent');​
    เรียกใช้งาน Controller ของ com_hellocomponent
  3. $controller->execute(JFactory::getApplication()->input->get('task'));​
    ตรวจสอบ task จาก Url ซึ่ง task นั้นจะเป็นตัวกำหนดว่าจะเรียกใช้งาน Method ไหนใน Object

 2.2 สร้างโฟลเดอร์ language และโฟลเดอร์ภาษา (โฟลเดอร์ภาษา เช่น ภาษาไทย คือ โฟลเดอร์ th-TH และภาษาอังกฤษ คือ โฟลเดอร์ en-GB ) ซึ่งในโฟลเดอร์ภาษา การสร้างจะนำหน้าด้วยภาษา ก็มีไฟล์ ดังนี้

2.2.1 ไฟล์ en-GB.com_hellocomponent.ini

COM_HELLOCOMPONENT = "Hello Componect"
COM_HELLOCOMPONENT_XML_DESCRIPTION = "This is hello componect."
COM_HELLOCOMPONENT_A = "Hello Componect Test A"
COM_HELLOCOMPONENT_B = "Hello Componect Test B"
COM_HELLOCOMPONENT_CONTROL_PANEL = "Hello Componect Control Panel"

2.2.2 ไฟล์ en-GB.com_hellocomponent.sys.ini

COM_HELLOCOMPONENT = "Hello Componect"
COM_HELLOCOMPONENT_XML_DESCRIPTION = "This is hello componect."

2.3 access.xml คือ ไฟล์เป็นส่วนกำหนดสิทธิ์ user

<?xml version="1.0" encoding="utf-8" ?>
<access component="com_hellocomponent">
	<section name="component">
		<action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" />
		<action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" />
		<action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" />
		<action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" />
		<action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" />
		<action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" />
		<action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" />
		<action name="core.edit.value" title="JACTION_EDITVALUE" description="JACTION_EDITVALUE_COMPONENT_DESC" />
	</section>
</access>

2.4 config.xml คือ ไฟล์กำหนดค่า config

<?xml version="1.0" encoding="utf-8"?>
<config>
	<fieldset
		name="permissions"
		label="JCONFIG_PERMISSIONS_LABEL"
		description="JCONFIG_PERMISSIONS_DESC"
		>

		<field
			name="rules"
			type="rules"
			label="JCONFIG_PERMISSIONS_LABEL"
			filter="rules"
			validate="rules"
			component="com_hellocomponent"
			section="component"
		/>

	</fieldset>
</config>

 บทต่อไปเป็นเรื่อง ของ Controller

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
วิธีสมัคร Binance ง่าย ๆ ใน 3 นาที ผจญภัยในโลกของ crypto
โดย p444722 อ 02 ม.ค. 2024 11:52 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
283
อ 02 ม.ค. 2024 11:52 pm โดย p444722 View Topic วิธีสมัคร Binance ง่าย ๆ ใน 3 นาที ผจญภัยในโลกของ crypto
วิธีเปิดบัญชี Binance ขั้นตอนในการลงทุนดิจิทัล
โดย p444722 อ 02 ม.ค. 2024 11:32 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
281
อ 02 ม.ค. 2024 11:32 pm โดย p444722 View Topic วิธีเปิดบัญชี Binance ขั้นตอนในการลงทุนดิจิทัล
วิธีอ่านค่าตัวต้านทาน แบบเส้น 4 และ 5 แถบสี วิธีการอ่านค่าตัวต้านทาน Resistor (R)
โดย mindphp จ 01 ม.ค. 2024 2:30 pm บอร์ด IOT - Internet of things
2
1801
จ 01 ม.ค. 2024 2:45 pm โดย mindphp View Topic วิธีอ่านค่าตัวต้านทาน แบบเส้น 4 และ 5 แถบสี วิธีการอ่านค่าตัวต้านทาน Resistor (R)
ความแตกต่างของเครื่อง Server R210 กับ R210 II
โดย mindphp จ 01 ม.ค. 2024 11:37 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
309
จ 01 ม.ค. 2024 12:04 pm โดย mindphp View Topic ความแตกต่างของเครื่อง Server R210 กับ R210 II
มาทำความรู้จักกับบัตรผ่อนสินค้ากัน
โดย asider8629 อ 31 ธ.ค. 2023 8:30 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
291
จ 01 ม.ค. 2024 9:58 am โดย Consolez View Topic มาทำความรู้จักกับบัตรผ่อนสินค้ากัน
ESP32 WiFi Node32s ESP-32 ESP-32S NodeMCU ESP-WROOM-32 WiFi Bluetooth
โดย mindphp อ 31 ธ.ค. 2023 8:28 pm บอร์ด IOT - Internet of things
0
773
อ 31 ธ.ค. 2023 8:28 pm โดย mindphp View Topic ESP32 WiFi Node32s ESP-32 ESP-32S NodeMCU ESP-WROOM-32 WiFi Bluetooth
Mg90s Servo เฟืองเหล็ก motor Version อัพเกรดเฟือง ตัวนี้หมุนครึ่งรอบ 180 องศา
โดย mindphp อ 31 ธ.ค. 2023 8:27 pm บอร์ด IOT - Internet of things
0
1343
อ 31 ธ.ค. 2023 8:27 pm โดย mindphp View Topic Mg90s Servo เฟืองเหล็ก motor Version อัพเกรดเฟือง ตัวนี้หมุนครึ่งรอบ 180 องศา
ชุดข้อต่อ Servo Bracket เป็นโลหะวัสดุทนมาก ไว้ใช้คู่กับ Servo สำหรับทำแขนหมุน
โดย mindphp อ 31 ธ.ค. 2023 8:26 pm บอร์ด IOT - Internet of things
0
1326
อ 31 ธ.ค. 2023 8:26 pm โดย mindphp View Topic ชุดข้อต่อ Servo Bracket เป็นโลหะวัสดุทนมาก  ไว้ใช้คู่กับ Servo สำหรับทำแขนหมุน