文章彙整

Magento2 客製化模組製作

By Sabina 9 months agoNo Comments
首頁  /  Magento  /  Magento-2  /  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的粉絲專頁來定期收看我們發佈的相關文章喔!

 

 

以上內容由Astralweb 歐斯瑞編寫製作

 000

推薦文章

Category:
  Magento-2

留下回應

你的電子郵件地址不會被公開.

取得獨家電子商務祕技

建立更好的策略靈感

跟上全球的網路趨勢

絕佳的電商解決方案

電子商務戰略全指南

每月發送電商戰略指南,只要填寫E-mail即可訂閱!

請到您的信箱確認,即可完成訂閱。