โมดูลที่กำหนดเองของ Magento: ทีละขั้นตอนเพื่อสร้างใน Magento 2

เผยแพร่แล้ว: 2020-11-11

โมดูลที่กำหนดเองของ Magento เป็นกระบวนการพัฒนาที่สำคัญสำหรับนักพัฒนาระบบ Magento ดังที่คุณทราบ ในบางช่วงเวลา นักพัฒนาซอฟต์แวร์อาจจำเป็นต้องผสานรวมฟังก์ชันหรือโมดูลของตนเอง ในบล็อกโพสต์วันนี้ เราจะแนะนำคุณทีละขั้นตอนในการพัฒนาโมดูลที่กำหนดเองใน Magento 2

อัปเดตล่าสุด: เราเพิ่งเปิดตัวธีม Claue Multipurpose Magento 2 เวอร์ชัน 2.0 พร้อมการปรับปรุงประสิทธิภาพมากมายและคุณลักษณะพิเศษเฉพาะ ตรวจสอบชุดรูปแบบนี้เลย: Claue Magento Theme 2. 0

claue2_edited (1)

สาธิตสด

Claue – ธีม Magento 2&1 ที่สะอาดและเรียบง่ายเป็นเทมเพลตที่ยอดเยี่ยมสำหรับร้านอีคอมเมิร์ซที่ทันสมัยและสะอาดตา พร้อมด้วยเลย์เอาต์ของหน้าแรกมากกว่า 40 แบบและตัวเลือกมากมายสำหรับร้านค้า บล็อก พอร์ตโฟลิโอ เลย์เอาต์ตัวระบุตำแหน่งร้าน และหน้าที่มีประโยชน์อื่นๆ Claue เวอร์ชัน 2. 0 มาพร้อมกับคุณสมบัติพิเศษมากมาย ได้แก่ :

  • อิงจากธีม Luma
  • ตรงตามมาตรฐานทั้งหมดของ Magento Theme
  • การปรับปรุงประสิทธิภาพที่สำคัญ
  • เข้ากันได้กับส่วนขยายของบุคคลที่สามส่วนใหญ่
  • เข้ากันได้อย่างสมบูรณ์กับ Magento 2.4.x

รุ่นขั้นสูงที่สองนี้แตกต่างอย่างสิ้นเชิงจากรุ่นก่อน ดังนั้น หากคุณใช้ Claue เวอร์ชัน 1 และต้องการอัปเดตเป็น Claue เวอร์ชัน 2 คุณสามารถสร้างเว็บไซต์ใหม่ได้เท่านั้น แทนที่จะอัปเดตจากเวอร์ชันเก่า เอาล่ะ กลับมาที่หัวข้อหลักกัน

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

Magento มาพร้อมกับกลุ่มโค้ด 3 ประเภท (Code, Core และ Local) ซึ่งมีโมดูลที่กำหนดเองและโมดูลหลักอยู่ พูลในเครื่อง (โฟลเดอร์) คือตำแหน่งที่โมดูลที่กำหนดเองทั้งหมดอยู่หรือควรวางไว้ ด้านล่างนี้เป็นส่วนประกอบที่โมดูลควรมี

  • บล็อก – คุณต้องจัดเตรียมคุณลักษณะที่ใช้เพื่อแสดงข้อมูลในเทมเพลตของเราที่นี่
  • โมเดล – ตรรกะทางธุรกิจทั้งหมดมีอยู่ที่นี่
  • ทรัพยากร – โมเดลรวมถึงฟังก์ชันที่ใช้สำหรับการโต้ตอบกับฐานข้อมูล
  • ตัวควบคุม – กำหนดเค้าโครงหน้าและบล็อกไฟล์ และจะถูกโหลดเมื่อมีการร้องขอ URL
  • ฯลฯ – รวมไฟล์การกำหนดค่าในรูปแบบ XML ที่แสดง Magento ว่ามีไฟล์กี่ไฟล์ที่โมดูลมีและโมดูลโต้ตอบอย่างไร
  • Helpers – รวมฟังก์ชันที่ใช้ในการกำหนดตรรกะทางธุรกิจทั่วไป (เช่น การปรับขนาดภาพ การตรวจสอบความถูกต้อง) ฟังก์ชันเหล่านี้ใช้ได้ทุกที่ในแอปพลิเคชัน Magento
  • sql – ประกอบด้วยสคริปต์ SQL เพื่อสร้าง แก้ไข หรือลบตาราง SQL

จะสร้างโมดูลที่กำหนดเองของ Magento ได้อย่างไร?

สร้างโมดูลอย่างง่ายใน Magento 2

การสร้างโมดูลอย่างง่ายใน Magento 2 นั้นง่ายมาก คุณจะต้องทำงานต่อไปนี้ให้สำเร็จ:

  • สร้างไดเร็กทอรีใหม่สำหรับโมดูล
  • สร้างสคริปต์ registration.php
  • สร้างไฟล์ข้อมูล etc/module.xml
  • ติดตั้งโมดูลใหม่

สร้างไดเร็กทอรีใหม่สำหรับโมดูล

มีสองตัวเลือกให้เลือกสำหรับตำแหน่งของไดเร็กทอรีใหม่

  • app/code/{vendor}/
  • vendor/{vendor}/

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

ประการแรก คุณต้องสร้างไดเร็กทอรีชื่อ EndPoint (ชื่อผู้ขายของเรา) โดยมีไดเร็กทอรีย่อยอยู่ภายใน MyModule :

 cd {website_root} mkdir -p app/code/EndPoint/MyModule

สร้างสคริปต์ register.php

ไฟล์ register.php บอกให้ Magento ลง registration.php โมดูลใหม่ภายใต้ชื่อและตำแหน่งเฉพาะ

สร้างไฟล์ชื่อ app/code/EndPoint/MyModule/registration.php ด้วยรหัสด้านล่าง

 <?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'EndPoint_MyModule' , __DIR__ );

สร้างไฟล์ข้อมูล etc/module.xml

ในขั้นตอนนี้ คุณต้องสร้างไฟล์ข้อมูลโมดูล ซึ่งเราจะระบุหมายเลขเวอร์ชันของโมดูล อันดับแรก เราต้องสร้างไดเร็กทอรี etc ภายใน app/code/EndPoint/MyModule :

 mkdir app/code/EndPoint/MyModule/etc

จากนั้นสร้าง module.xml ด้วยบรรทัดคำสั่งต่อไปนี้

 <?xml version="1.0"?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:Module/etc/module.xsd" > < module name = "EndPoint_MyModule" setup_version = "1.0.0" > </ module > </ config >

ติดตั้งโมดูลใหม่

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

 php bin/magento setup:upgrade

Magento จะนำรายชื่อโมดูลและการอัปเดตการกำหนดค่าออก และโมดูลใหม่ EndPoint_MyModule ควรอยู่ในรายการนั้น

เพิ่มเส้นทางที่กำหนดเองไปยังโมดูลของเรา

ตอนนี้เรามีโมดูลที่ใช้งานได้และเปิดใช้งานอยู่ แต่ยังไม่ได้ทำอะไรเลย! วิธีง่ายๆ ในการตรวจสอบว่าโมดูลของเราเปิดใช้งานอยู่คืออะไร มาตั้งค่าเส้นทางที่กำหนดเองกัน ดังนั้นหากเราพบ URL เช่น https://{our_website}/mymodule/test/helloworld เราสามารถส่งคืนการตอบกลับที่กำหนดเองจากคอนโทรลเลอร์ได้

การสร้างเส้นทางที่กำหนดเองจะต้องมีขั้นตอนบางอย่างในตัวเอง:

  • สร้างไดเร็กทอรีใหม่สำหรับคอนโทรลเลอร์
  • สร้างไฟล์ etc/routes.xml
  • สร้างตัวควบคุม
  • อัพเกรดโมดูลใหม่

สร้างไดเร็กทอรีใหม่สำหรับคอนโทรลเลอร์

ขั้นแรก เราต้องสร้างไดเร็กทอรีใหม่ที่คอนโทรลเลอร์ PHP ใหม่สำหรับเส้นทางที่กำหนดเองของเราจะใช้งานได้ เส้นทางไดเรกทอรีใหม่ควรเป็น:

app/code/EndPoint/MyModule/Controller

คุณสามารถสร้างระดับไดเร็กทอรีได้มากเท่าที่คุณต้องการ ตามเส้นทางที่ต้องการของเรา ตัวอย่างเช่น หากคุณสร้างคลาสชื่อ Index ใน app/code/EndPoint/MyModule/Controller URL ที่จะถูกส่งไปยังตัวควบคุมนี้จะเป็น https://{our_website}/mymodule/index (ไดเรกทอรี "ตัวควบคุม" คือ ละเลย)

ซื้อ หากคุณสร้างคลาสชื่อ HelloWorld ใน app/code/EndPoint/MyModule/Controller/Test URL ที่ได้จะเป็น https://{our_website}/mymodule/test/helloworld

สร้างไฟล์ etc/routes.xml

routes.xml จะบอก Magento ว่า URL พื้นฐานใดที่จะใช้สำหรับโมดูลของเรา ขั้นแรก เราต้องสร้างไดเร็กทอรี "ส่วนหน้า" ซึ่งต้องวางไฟล์ routes.xml:

 mkdir app/code/EndPoint/MyModule/etc/frontend

เมื่อคุณต้องการให้ URL พื้นฐานเป็น MyModule คุณต้องสร้างไฟล์ XML ภายในไดเร็กทอรีใหม่ที่จะกำหนดเส้นทางคำขอทั้งหมดไปยัง URL ที่กำหนดไปยังโมดูลคอนโทรลเลอร์ของเรา:

 <?xml version="1.0" ?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:App/etc/routes.xsd" > < router id = "standard" > < route frontName = "mymodule" id = "mymodule" > < module name = "EndPoint_MyModule" /> </ route > </ router > </ config >

สร้างตัวควบคุม

หากเราต้องการตอบสนองต่อคำขอสำหรับ https://{our_website}/mymodule/test/helloworld คุณจะต้องสร้างไดเร็กทอรี Controller พื้นฐานและไดเร็กทอรีย่อย Test :

 mkdir -p app/code/EndPoint/MyModule/Controller/Test

ภายใต้ไดเรกทอรีนี้ คุณต้องสร้างตัวควบคุม Magento แบบกำหนดเองของเรา ตัวควบคุมเส้นทางทั้งหมดควรขยาย \Magento\Framework\App\Action\Action นอกจากนี้เรายังต้องมีเมธอด construct() สาธารณะเพื่อส่งบริบทไปยังบรรพบุรุษของเราและ execute() ฟังก์ชันที่จะถูกเรียกเมื่อ URL ถูกกด:

 <?php namespace EndPoint \ MyModule \ Controller \ Test ; class HelloWorld extends \ Magento \ Framework \ App \ Action \ Action { public function __construct ( \Magento\Framework\App\Action\Context $context ) { parent ::__construct( $context ); } public function execute () { echo "Hello world!" ; } }

อัพเกรดโมดูลใหม่

ในขั้นตอนนี้ คุณต้องอัปเกรดการตั้งค่าวีโอไอพีของเรา แต่เนื่องจากคุณรวมตัวควบคุมใหม่ที่ได้รับพารามิเตอร์จากหัวฉีดอ้างอิงในโครงสร้าง คุณต้องคอมไพล์เอ็นจินการฉีดการพึ่งพา (เช่น โรงงาน พร็อกซี่ และตัวสกัดกั้น) ในที่สุด คุณต้องล้างแคชเพื่อให้บริการเนื้อหาใหม่จาก URL ที่กำหนดเองของเรา:

 php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento cache:flush

และนั่นแหล่ะ เปิด /helloworld/index/index URL ในเบราว์เซอร์ของคุณและคุณควรได้รับสิ่งนี้: นั่นหมายความว่าโมดูลของเราใช้งานได้!

วีโอไอพีที่กำหนดเองโมดูล

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