ตัวอย่างวิธีการสร้าง Module Joomla พื้นฐาน

แชร์ ความรู้ในการ พัฒนา Joomla Component Extension Module Plugin

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
mcmakdonal
PHP Super Member
PHP Super Member
โพสต์: 246
ลงทะเบียนเมื่อ: 18/05/2015 9:51 am

ตัวอย่างวิธีการสร้าง Module Joomla พื้นฐาน

โพสต์โดย mcmakdonal » 29/05/2015 3:39 pm

Module นั้นเป็นส่วนขยายที่มีขนาดที่เล็กและมีความยืดหยุ่นได้ดี พวกเราจะใช้บิตขนาดเล็กในหน้าเว็บเพจ และมันมักจะมีความซับซ้อนที่น้อยกว่าและมีความสามารถ ของเห็นความแตกต่างทั่วไปของ Component
คุณสามารถมองเห็น ตัวอย่าง Module จำนวนมากในพื้นฐาน Joomla เช่น Menu , ข่าว , Login Form และอื่นๆ
ในการแนะนำนี้ จะอธิบายวิธีการเกี่ยวกับการสร้างตัวอย่าง Hello World Module ตลอดการแนะนำนี้คุณจะได้เรียนรู้เรื่อง พื้นฐานของ โครงสร้างไฟล์ ของ Module . ในโครงสร้างพื้นฐานนี้สามารถขยายจนถึงการสร้าง Module ที่ซับซ้อนมากกว่านี้ได้

โครงสร้างไฟล์
นี้คือ 4 พื้นฐานของไฟล์ที่ใช้ในพื้นฐานการออกแบบของการพัฒนา Module
• Mod_helloworld.php : ไฟล์นี้เป็นจุดเริ่มต้นหลักของ Module มันจะทำการปฏิบัติการขั้นตอนการเริ่มต้นใดๆที่จำเป็น เรียกตัวช่วยในการเก็บข้อมูลที่จำเป็น รวมไปถึงการเลือก Template ที่จะแสดงผลลัพธ์ของ Module ออกมา
• Mod_helloworld.xml : ไฟล์นี้ประกอบด้วยข้อมูล เกี่ยว Module. มันกำหนดให้ไฟล์จะต้องมีการติดตั้งโดย Joomla Installer และ ระบุการกำหนดค่าพารามิเตอร์สำหรับ Module
• Helper.php : ไฟล์นี้ประกอบด้วย ตัวช่วย Class ว่าใช้อันไหนในขณะกำลังใช้งานในการเรียกข้อมูลมากแสดงใน Module (โดยปรกติมาจาก Database หรือ แหล่งข้อมูลอื่นๆ)
• Tmpl/default.php : มันคือ Module Template. ไฟล์นี้จะทำการเก็บรวบรวมข้อมูล โดย Mod_helloworld.php และมันจะแปลงให้เป็น HTML เพื่อใช้ในการแสดงผลในเว็บเพจ


วิธีการสร้าง Mod_helloworld.php
ไฟล์ Mod_helloworld จะมีการพัฒนาออกเป็น 3 ส่วน
• ประกอบด้วยไฟล์ helper.php ซึ่งประกอบจากClass ที่ใช้ในการรวบรวมข้อมูลที่จำเป็น
• ร้องขอ Method Classช่วยเหลือเพื่อดึงข้อมูล
• ประกอบด้วย Template ที่ไว้ใช้แสดงผลลัทธ์
Helper Class ถูกกำหนดในไฟล์ helper.php. ในไฟล์นี้จะประกอบด้วยคำสั่ง require_once

โค้ด: เลือกทั้งหมด

require_once dirname(__FILE__) . '/helper.php';


require_once ถูกใช้เพราะว่าฟังชั่น Helper ของเราได้กำหนดไว้ใน Class แล้ว และต้องการกำหนด Classไว้ครั้งเดียว
พวก Hepler Class ไม่สามารถกำหนดได้ แต่เมื่อเป็นมัน มันจะเพิ่มหนึ่ง Method : GetHello() มันไม่ได้มีความจำเป็นที่จะทำข้อความ “Hello , World” นั้น ใน Method ส่งกลับได้ในตัวอย่างได้อย่างง่ายดายประกอบด้วย Template . พวกเราใช้ helper Classที่นี้เพื่อแสดงให้เห็นเทคนิคพื้นฐานนี้
Module ของเราในขณะนี้ ยังไม่ได้ใช้ พารามิเตอร์ ใดๆ แต่พวกเราจะไปยัง helper Method ต่อไป เพื่อที่จะนำมาใช้ในภายหลัง ถ้าพวกเราตัดสินในที่ขยายการทำงานของ Module
Helper Class Method ถูกร้องขอตามวิธีดังต่อไปนี้

โค้ด: เลือกทั้งหมด

$hello = modHelloWorldHelper::getHello($params);


ไฟล์ mod_helloworld.php เสร็จสมบูรณ์
เมื่อไฟล์ mod_helloworld.php เสร็จสิ้นจะเป็นดังนี้

โค้ด: เลือกทั้งหมด

<?php
/**
 * Hello World! Module Entry Point
 *
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @license    GNU/GPL, see LICENSE.php
 * @link       http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module
 * mod_helloworld is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */
 
// No direct access
defined('_JEXEC') or die;
// Include the syndicate functions only once
require_once dirname(__FILE__) . '/helper.php';
 
$hello = modHelloWorldHelper::getHello($params);
require JModuleHelper::getLayoutPath('mod_helloworld');


มีอยู่หนึ่งบรรทัดที่พวกเรายังไม่ได้อธิบาย. บรรทัดนี้ตรวจสอบเพื่อความแน่ใจใน ไฟล์ที่กำลังจะประกอบจาก Joomla application. ในนี้จำเป็นต้องป้องกัน Variable injection และความกังวลด้านความปลอดภัยที่จะเกิดขึ้น

สร้าง helper.php

ไฟล์ helper.php ประกอบด้วย helper Class มันถูกใช้ในการดึงข้อมูลขึ้นมาเพื่อที่จะแสดง ใน Method output . ตามที่ระบุไว้ก่อนหน้านี้ . พวก helper class จะมี 1 method : getHello(). Method นี้จะส่งข้อความ “Hello world” มา

นี้คือโค้ดไฟล์ helper.php

โค้ด: เลือกทั้งหมด

<?php
/**
 * Helper class for Hello World! module
 *
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @link http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module
 * @license        GNU/GPL, see LICENSE.php
 * mod_helloworld is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */
class ModHelloWorldHelper
{
    /**
     * Retrieves the hello message
     *
     * @param   array  $params An object containing the module parameters
     *
     * @access public
     */   
    public static function getHello($params)
    {
        return 'Hello, World!';
    }
}



มันไม่มีกฎในการเริ่มต้น ดังนั้นพวกมันจะมีชื่อ helper class ของเราที่มี แต่ มันก็เป็นประโยชน์ที่จะทำแบบนี้ ดังนั้นมันก็ง่ายต่อการพิสูจน์และ Locatable
Note : มันจะต้องได้อยู่ในรูปแบบ ถ้าคุณวางแผนให้มันใช้ com_ajax Plugin
Module ระดับสูงขึ้นอื่นๆ อาจจะรวมถึงการประกอบด้วยการร้องขอ Database หรือ การทำงานอื่นๆใน helper class method


สร้าง tmpl/default.php

ไฟล์ default.php คือไฟล์ที่ไว้แสดง Template ว่าจะให้แสดงผลลัทธ์ของ Module
นี้คือ Code default.php มีดังต่อไปนี้


โค้ด: เลือกทั้งหมด

<?php
// No direct access
defined('_JEXEC') or die; ?>
<?php echo $hello; ?>


สร้าง Folder tmpl แล้วนำ default.php ไปไว้ข้างใน


จุดที่สำคัญของที่ควรทราบก็คือ Template ไฟล์นั้นมีขอบเขตเดียวกันกับไฟล์ mod_helloworld.php สิ่งนี้มีความหมายว่าตัวแปร $hello สามารถกำหนดได้ใน mod_helloworld.php และเมื่อนำไปใช้ใน Template ไม่จำเป็นต้องประกาศหรือมี Function การเรียกอื่นๆ


การสร้าง mod_helloworld.xml
ในไฟล์ mod_helloworld.xml ถูกใช้เพื่อระบุว่าไฟล์ที่จะติดตั้งจะต้องมีการคัดลอกและใช้โดย Module การจัดการเพื่อตรวจสอบว่า พารามิเตอร์ ถูกใช้เพื่อกำหนดค่าของ Module . ข้อมูลอื่นๆเกี่ยวกับ Module นอกจากนี้ยังมีการระบุในแฟ้มนี้



นี้คือโค้ด mod_helloworld.xml มีดังต่อไปนี้

โค้ด: เลือกทั้งหมด

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
    <name>Hello, World!</name>
    <author>John Doe</author>
    <version>1.0.0</version>
    <description>A simple Hello, World! module.</description>
    <files>
        <filename>mod_helloworld.xml</filename>
        <filename module="mod_helloworld">mod_helloworld.php</filename>
        <filename>index.html</filename>
        <filename>helper.php</filename>
        <filename>tmpl/default.php</filename>
        <filename>tmpl/index.html</filename>
    </files>
    <config>
    </config>
</extension>


Manifest files อธิบายรายละเอียดทางเทคนิคขององค์ประกอบที่ใช้ในไฟล์ xml

คุณจะสังเกตเห็นว่ามี 2 ไฟล์เพิ่มเติมที่เรายังไมได้กล่าวถึง : index.html และ tmpl/index.html. ไฟล์เหล่านี้จะถูกรวมเพื่อให้ไดเรกเทอรีเหล่านี้ไม่สามารถเรียกดูได้ ถ้าผู้ใช้พยายามจะชี้ให้ browser ของพวกเขาไปยัง Folder : index.html ไฟล์จะปรากฏ ไฟล์สามารถถูกทิ้งไว้ว่างเปล่าหรือสามารถมีเส้นที่เรียบง่าย


สร้าง ไฟล์ index.html โดยมีโค้ดดังนี้

โค้ด: เลือกทั้งหมด

<html><body bgcolor="#FFFFFF"></body></html>


แล้วนำไฟล์ index.html ไปใส่ใน tmpl ด้วย และวางไว้ใน Folder mod_helloworld

มันจะแสดงหน้าเพจเปล่าๆ
ตั้งแต่ Module ของเราไม่ได้ใช้จาก form fields , ส่วนการตั้งค่าที่ว่างเปล่า

ข้อสรุป
การพัฒนา Module สำหรับ Joomla ค่อนข้างง่าย กระบวนการตรงไปตรงมา โดยใช้เทคนิคที่อธิบายไว้ในการแนะนำนี้ ไม่มีที่สิ้นสุด Module สามารถที่จะพัฒนาให้มีความยุ่งยากน้อย


วิธีการติดตั้ง

หลังจากการเตรียมไฟล์เสร็จสิ้นให้ไปที่

ส่วนเสริม > จัดการส่วนเสริม

2015-05-29_15-19-25.png



คลิกที่ ค้นหาส่วนเสริม ตามภาพ

2015-05-29_15-20-42.png


จะได้ตามภาพ ให้คลิกเลือก แล้วกด ติดตั้ง

2015-05-29_15-22-52.png

2015-05-29_15-23-35.png
2015-05-29_15-23-35.png (8.27 KiB) เปิดดู 463 ครั้ง


เรียกใช้งานไปที่ ส่วนเสริม > จัดการโมดูล แล้วคลิก สร้างใหม่

2015-05-29_15-27-35.png


มันจะมี Hello world เข้ามาให้เลือก

2015-05-29_15-32-26.png
2015-05-29_15-32-26.png (3.83 KiB) เปิดดู 463 ครั้ง


    ถ้าไม่มีให้ไปทำตามภาพ แล้วกด เปิด

    2015-05-29_15-31-05.png


เมื่อคลิกเข้ามาที่ Hello World ให้ทำการตั้งชื่อ และกำหนดตำแหน่งในการแสดงผล พร้อมกับกดบักทึก

2015-05-29_15-34-31.png


เมื่อเสร็จสินออกไปดูที่ด้านหน้าเว็บไซต์จะได้ผลลัพท์ตามนี้

2015-05-29_15-36-23.png
2015-05-29_15-36-23.png (4.48 KiB) เปิดดู 463 ครั้ง



เป็นอันเสร็จสิ้นขั้นตอนการ สร้าง Module และวิธีการติดตั้งเบื้องต้น นะครับ

สามารถ Download ไฟล์ได้ที่นี้ครับ
mod_helloworld.rar
(1.89 KiB) ดาวน์โหลด 75 ครั้ง


ต้นฉบับ Website https://docs.joomla.org/J3.x:Creating_a ... sic_Module
รูปภาพ

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 1 และ บุคคลทั่วไป 0 ท่าน