จะพัฒนาโมดูล Joomla ได้อย่างไร?


10

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

ตอนนี้ฉันกำลังใช้โมดูล HTML ที่กำหนดเองทั่วรหัสของฉันและฉันต้องการที่จะเข้าถึง PHP และทำให้พวกเขาทั้งหมดเป็นโมดูล แต่ฉันไม่พบบทเรียนที่จะทำเช่นนั้น ฉันเคยแก้ไขโมดูลที่ติดตั้งมาก่อน แต่ฉันไม่รู้ว่าจะสร้างโมดูลที่จะติดตั้งได้อย่างไร

เอกสาร joomla ค่อนข้างสับสนและหลังจากอ่านมันหลายครั้งฉันก็ยอมแพ้ ใครช่วยอธิบายกระบวนการนี้ให้ฉันได้บ้าง ขอบคุณ!

คำตอบ:


17

เรียนรู้การพัฒนาโมดูล Joomla

วิธีที่ฉันเรียนรู้คือการศึกษาและปรับแต่งแก่นหรือโมดูลอื่น ๆ ของบุคคลที่สาม
โมดูลตามแนวคิดนั้นง่ายกว่าส่วนประกอบ (ซึ่งเราสามารถพูดได้ว่าเป็น 2 แอพพลิเคชั่นส่วนหน้า / ส่วนหลัง) และได้รับการออกแบบมาเพื่อแสดงชิ้นส่วนของข้อมูล
ดังนั้นหากคุณเปิดโฟลเดอร์ / ไฟล์ของโมดูลและเริ่มอ่านโค้ดคุณอาจจะเข้าไปเร็ว

Joomla Module Anatomy ตามตัวอย่าง

ตัวอย่างเช่นคุณสามารถเปิดโมดูลบทความล่าสุดใน Joomla 3.2 และตรวจสอบรหัสของมันในขณะที่อ่านบรรทัดด้านล่าง ในโฟลเดอร์ของโมดูลเราจะพบไฟล์พื้นฐาน 4 ไฟล์:

1. mod_articles_latest.php
2. helper.php
3. tmpl/default.php
4.mod_articles_latest.xml

  1. mod_articles_latest.phpเป็นไฟล์หลักของโมดูลหนึ่งที่ถูกนำมาใช้เป็นครั้งแรกเมื่อโมดูลที่เรียกว่า มันเริ่มต้นโมดูลและรวมถึงการhelper.phpเรียกวิธีการเรียนของผู้ช่วยในการดึงข้อมูลและในที่สุดก็รวมถึงแม่แบบของโมดูล ( default.php) เพื่อแสดงข้อมูล

  2. helper.phpไฟล์คือ "เครื่องจักร" ของโมดูล (ถ้าเราสามารถตั้งชื่อมันว่าอย่างนั้น) ในผู้ช่วยเราสร้างคลาสของโมดูลและวิธีการเพื่อดึงข้อมูล นี่คือสถานที่ที่เราสามารถมีโมดูล "พูดคุย" กับฐานข้อมูล การอ่านรหัสในไฟล์ helper ของโมดูลนี้คุณจะเห็นว่ามันมีModArticlesLatestHelperชั้นซึ่งมีหนึ่งวิธีการ: getList(&$params)
    ภายในวิธีนี้โมดูลกำลังตรวจสอบการตั้งค่าแบ็คเอนด์ของโมดูลและในที่สุดก็สร้างรายการบทความที่จะส่งคืนโดยขึ้นอยู่กับเงื่อนไขเหล่านี้ โปรดทราบว่าโมดูลนี้จะใช้JModelLegacy::getInstanceวิธีการที่จะกลับเนื้อหารูปแบบวัตถุ

  3. default.phpเป็นแม่แบบหลักของโมดูลและมีความรับผิดชอบในการแสดงเนื้อหาของโมดูล - ที่นี่เราสร้างเอาท์พุท html โดยใช้ข้อมูลที่คุณดึงมาก่อนหน้านี้ในmod_articles_latest.phpโดยการเรียกชั้นเรียนของโมดูล มันตั้งอยู่ภายในโฟลเดอร์tmpl * โปรดสังเกตว่าไฟล์ของโมดูลหลักรวมถึงไฟล์เทมเพลตด้วยJModuleHelper::getLayoutPathวิธีการซึ่งก่อนจะตรวจสอบการแทนที่แม่แบบใด ๆ

  4. ในที่สุดmod_articles_latest.xmlฉันจะเรียกมันว่า "ทูต" ของโมดูล เป็นไฟล์ที่ "แนะนำ" โมดูลให้กับ Joomla ในระหว่างการติดตั้งระบุไฟล์ที่จะถูกคัดลอกโดยตัวติดตั้งและยังมีข้อมูลเกี่ยวกับพารามิเตอร์ของโมดูลที่ใช้โดยตัวจัดการโมดูลเช่นข้อมูลเพิ่มเติม เกี่ยวกับโมดูล

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


15

3

เราได้มีการพัฒนาโมดูลฟรีสำหรับวัตถุประสงค์เดียวกันที่กำหนดเอง PHP โมดูลสำหรับ Joomla CMS

คุณต้องสร้างไฟล์ PHP เช่น login.php ใน [website-root] / modules / mod_customphp / files

  • ตอนนี้ใช้ไฟล์นี้
  • ไปที่ [backend] -> module-manager
  • สร้างโมดูล php ที่กำหนดเองใหม่
  • ในพารามิเตอร์รวมใส่ใส่เข้าสู่ระบบ
  • สิ่งนี้จะแสดงผล login.php ในโมดูล

ที่ตอบกรณีการใช้งานของฉัน wrt php แต่มันไม่ตอบสิ่งที่ฉันถามจริง ๆ (ในกรณีของฉันฉันต้องบันทึกการตั้งค่าบางอย่างเช่นสี ฯลฯ สำหรับการใช้แต่ละโมดูลซึ่งจะง่ายขึ้นถ้าฉันสามารถสร้าง โมดูลใหม่ค่อนข้างเพียงแค่เข้าถึง PHP) แต่ขอบคุณสำหรับเคล็ดลับ
serakfalcon

คุณสามารถเพิ่มพารามิเตอร์เพิ่มเติมลงในโมดูลและใช้พารามิเตอร์เหล่านี้ในไฟล์ php ของคุณ
Shyam

3

คุณสามารถคัดลอกโมดูลที่มีอยู่ในการติดตั้งท้องถิ่น จากนั้นคุณเปลี่ยนชื่อในแบบที่คุณต้องการ คุณต้องเปลี่ยนชื่อไฟล์ php และ xml เช่นเดียวกับชื่อคลาส php ในโค้ด จากนั้นคุณเพียงสร้างไฟล์ zip ของโมดูลของคุณ ไฟล์ซิปนี้คุณสามารถติดตั้งในการติดตั้ง joomla ของคุณ

คุณต้องการรายละเอียดเพิ่มเติมเกี่ยวกับการเปลี่ยนชื่อหรือไม่?


มันใช้งานได้ในระดับหนึ่งและบ่อยครั้งที่ฉันเริ่มต้น แต่ก็ไม่เพียงพอที่จะจัดการกับสตริงภาษาและสื่อเพิ่มเติมที่ติดตั้งในสถานที่ต่าง ๆ
Peter Wiseman

@PeterWiseman ใช่คุณพูดถูก แต่เป็นวิธีที่ง่ายและรวดเร็วในการเริ่มต้น
seagul
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.