Magento2 客製化模組製作
本篇要介紹如何在Magento2上製造一個客製化模組(Extension),我們會介紹一個模組必要的xml配置檔,和建置controller和view,呈現它們是如何溝通傳遞資料。
適用版本: Magento2.0以上
首先我們先決定好模組名稱為AstralWeb_HelloWorld,然後依照此模組名稱在app/code資料夾裡底下建立新的路徑app/code/AstralWeb/HelloWorld,一個模組必需要有registration.php和module.xml檔案,模組才能在Magento2底下運行,這兩個檔案我們建置的位置及內容如下:
檔案路徑: app/code/AstralWeb/HelloWorld/registration.php
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'AstralWeb_HelloWorld', __DIR__ );
檔案路徑: app/code/AstralWeb/Helloworld/etc/module.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd"> <module name="AstralWeb_HelloWorld" setup_version="0.0.1" /> </config>
接下來我們來建置前端的router.xml,這個檔案用來設定你網址路徑來呈現你製作的模組內容,檔案內容位置如下:
檔案路徑: app/code/AstralWeb/HelloWorld/etc/frontend/routes.xml
<?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 id="helloworld" frontName="helloworld"> <module name="AstralWeb_HelloWorld" /> </route> </router> </config>
建置Controller、View檔案,基本Magento2還是依照MVC框架去設計,所以這兩個檔案的做用就不再多說。
檔案路徑: app/code/AstralWeb/HelloWorld/Controller/Index/Index.php
<?php namespace AstralWeb\HelloWorld\Controller\Index; class Index extends \Magento\Framework\App\Action\Action { public function execute() { $this->_view->loadLayout(); $this->_view->renderLayout(); } }
檔案路徑: app/code/AstralWeb/HelloWorld/view/frontend/templates/HelloWorld.phtml
<?php echo $this->text(); ?>
在Magento架構下,不論是Magento1還是Magento2,controller 不會直接傳遞資料到view裡,view裡所的資料或參數都是透過Layout或Block裡的檔案設定取得,而Layout和Block的應用非常廣泛,這裡我們只進行最基礎的應用。
檔案位置: app/code/AstralWeb/HelloWorld/Block/HelloWorld.php
<?php namespace AstralWeb\HelloWorld\Block; class HelloWorld extends \Magento\Framework\View\Element\Template { public function text() { return 'hello world'; } }
Layout的檔案名稱必須與網址路徑相同, / 用 _來代替表示,例如 http:yourDomain.com/helloworld/index/index,檔名應為helloworld_index_index.xml
檔案位置: app/code/AstralWeb/HelloWorld/view/frontend/layout/helloworld_index_index.xml
<?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceContainer name="content"> <block class="AstralWeb\HelloWorld\Block\HelloWorld" name="HelloWorld" template="AstralWeb_HelloWorld::HelloWorld.phtml"></block> </referenceContainer> </body> </page>
以上都配置完成後,進行
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
就能將客製化的模組安裝上magento2上了,如果想確認是否有安裝成功可以下達php bin/magento module:status指令來查看所有模組狀態。
欲了解更多 Magento 的相關資訊 / 教學,小編建議你可以訂閱我們Facebook的粉絲專頁來定期收看我們發佈的相關文章喔!
我要留言