โมดูลที่กำหนดเองของ Magento: ทีละขั้นตอนเพื่อสร้างใน Magento 2
เผยแพร่แล้ว: 2020-11-11โมดูลที่กำหนดเองของ Magento เป็นกระบวนการพัฒนาที่สำคัญสำหรับนักพัฒนาระบบ Magento ดังที่คุณทราบ ในบางช่วงเวลา นักพัฒนาซอฟต์แวร์อาจจำเป็นต้องผสานรวมฟังก์ชันหรือโมดูลของตนเอง ในบล็อกโพสต์วันนี้ เราจะแนะนำคุณทีละขั้นตอนในการพัฒนาโมดูลที่กำหนดเองใน Magento 2
อัปเดตล่าสุด: เราเพิ่งเปิดตัวธีม Claue Multipurpose Magento 2 เวอร์ชัน 2.0 พร้อมการปรับปรุงประสิทธิภาพมากมายและคุณลักษณะพิเศษเฉพาะ ตรวจสอบชุดรูปแบบนี้เลย: Claue Magento Theme 2. 0
สาธิตสด
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 ของเราเพื่อสนับสนุนเว็บไซต์ของคุณ