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 – Clean, Minimal Magento 2&1 Theme是現代和乾淨的電子商務商店的絕佳模板,具有 40 多種主頁佈局和大量商店、博客、投資組合、商店定位器佈局和其他有用頁面的選項。 Claue 版本 2. 0 帶有一系列獨家功能,包括:

  • 基於 Luma 主題。
  • 滿足 Magento 主題的所有標準
  • 顯著的性能提升
  • 與大多數第三方擴展兼容。
  • 與 Magento 2.4.x 完全兼容

第二個高級版本與之前的版本完全不同。 因此,如果您使用的是 Claue 版本 1 並想更新到 Claue 版本 2,則只能重建新網站,而不是從舊版本更新。 現在,讓我們回到主題。

Magento 是一個非常通用的平台,具有許多有用的功能,並支持免費和付費模塊。 它提供了可以在線安裝以及可以定制的模塊,以滿足客戶的需求。 定制是通過生成一個模塊來實現的,然後可以利用PHP語言的力量根據選擇進行修改。 例如,如果我們的網站具有市場上不常見的特定功能或一組功能或要求,則一個模塊可以為我們填補這一空白。

Magento 帶有 3 種類型的代碼池(代碼、核心和本地),自定義和核心模塊駐留在其中。 本地池(文件夾)是所有自定義模塊所在或應該放置的位置。 下面給出的是模塊應包含的組件。

  • - 在這裡您需要提供用於在我們的模板中顯示數據的功能。
  • 模型——所有業務邏輯都包含在這裡。
  • 資源——模型包括用於數據庫交互的函數。
  • 控制器- 定義頁面佈局和塊文件,並在請求 URL 時加載。
  • ——包括 XML 格式的配置文件,顯示 Magento 模塊有多少文件以及模塊如何交互。
  • 助手——包括用於定義常見業務邏輯的函數(例如圖像調整大小、驗證)。 這些函數可以在 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

創建registration.php腳本

registration.php文件告訴 Magento 以特定名稱和位置註冊新模塊。

使用以下代碼生成名為app/code/EndPoint/MyModule/registration.php的文件

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

創建 etc/module.xml 信息文件

在這一步,您需要創建我們的模塊信息文件,我們將在其中指定模塊版本號。 首先,我們必須在app/code/EndPoint/MyModule中生成etc目錄:

 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應列在該列表中

向我們的模塊添加自定義路由

現在我們有一個工作的、啟用的模塊,但它還沒有做任何事情! 檢查我們的模塊是否啟用的簡單方法是什麼? 讓我們設置一個自定義路由,所以如果我們點擊像https://{our_website}/mymodule/test/helloworld這樣的 URL,我們可以從控制器返回自定義響應。

創建自定義路由本身需要一些步驟:

  • 為控制器創建一個新目錄
  • 創建一個etc/routes.xml文件
  • 創建控制器
  • 升級新模塊

為控制器創建一個新目錄

首先,我們需要創建一個新目錄,用於自定義路由的新 PHP 控制器將駐留在該目錄中。 新的目錄路徑應該是:

app/code/EndPoint/MyModule/Controller

您可以根據我們所需的路徑生成任意數量的目錄級別。 例如,如果您在app/code/EndPoint/MyModule/Controller中生成一個名為Index的類,將被路由到該控制器的 URL 將是https://{our_website}/mymodule/index (“控制器”目錄是忽略)。

購買 如果您在app/code/EndPoint/MyModule/Controller/Test中生成一個名為HelloWorld的類,則生成的 URL 將為https://{our_website}/mymodule/test/helloworld

創建 etc/routes.xml 文件

routes.xml會告訴 Magento 什麼基礎 URL 將用於我們的模塊。 首先,我們需要創建需要放置 routes.xml 文件的“frontend”目錄:

 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!" ; } }

升級新模塊

在這一步,您需要升級我們的 Magento 設置。 但是因為您在構造中包含了一個從依賴注入器獲取參數的新控制器。 您還需要編譯依賴注入引擎(例如工廠、代理和攔截器)。 最後,您需要清除緩存,以便從我們的自定義 URL 提供新內容:

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

就是這樣。 在您的瀏覽器中打開/helloworld/index/index URL,您應該會看到如下內容: 這意味著我們的模塊正在運行!

magento 自定義模塊

教程到此結束: Magento 自定義模塊:在 Magento 2 中逐步創建它。我們希望這是一個對您有用的博客。 如果您想了解更多有關 Magento 的信息,可以閱讀我們的 Magento 平台文章以了解更多詳細信息,還記得查看我們的 Magento 2 擴展和我們的 Magento 2 主題以支持您的網站。