Magento 自訂模組開發是任何 Magento 開發或 Magento 專案的核心部分,因為在任何階段您可能希望將自己的功能/模組整合到現有的 Magento 專案中。
在本系列中,我將介紹 Magento 自訂模組開發的詳細資訊。
如果您想進一步開發 Magento,請查看 Envato Market 上各種有用的 Magento 擴充功能。
在本系列中,我指的是 Magento 社群版 1.7,儘管是自訂版本 所有版本的 Magento 中的模組結構都是相同的。在開始實際的模組開發之前,讓我們快速了解 Magento 的基本結構。
每當您安裝新的 Magento 時,您都會注意到以下 Magento 目錄結構:
Magento MVC 結構簡介
與 Joomla、CakePHP、CodeIgniter 等任何其他主要框架一樣,Magento 也遵循基於 MVC 的架構,儘管這與核心 PHP MVC 架構略有不同。在這裡,我將透過與簡單的 PHP MVC 架構進行比較來解釋 Magento 架構的差異。
PHP MVC架構
在典型的 MVC 模式中,應用程式的流程如下所示:
- 有一個主要入口點 -
index.php
- 整個應用程式路由機制從這裡確定。 - 根據此路由機制和請求的 URL 模式,應用程式將呼叫適當的控制器。
- 然後控制器呼叫適當的視圖。
- 最後,視圖檔案從模型檔案收集資料並顯示資料。
Magento MVC 架構
Magento 的 MVC 架構在 MVC 模式的基礎上添加了幾層,但應用程式的基本控制流程如下:
- 有一個主入口點 -
index.php
- 整個應用程式將從這裡初始化。 - 將根據請求的 URL 呼叫適當的控制器。
- 控制器定義頁面並載入這些頁面的佈局檔案。
- 佈局檔案告訴控制器要使用哪些區塊檔案。
- 區塊檔案從模型和幫助程式檔案中收集資料並將其傳遞到模板檔案。
- 模板檔案接收資料並呈現 html。
最初,這可能很難理解,因為它包含一些額外的層。為了更熟悉控制流程,讓我們開發一個自訂的「Hello World」模組。
開始使用模組之前
- 我假設您已經擁有版本 1.7 或 1.7 的 Magento 工作副本(否則版本在現階段並不重要)
- 禁用快取。 要停用緩存,請前往 Magento 管理面板 > 系統 > 快取管理 > 從左側複選框中選擇所有快取類型 > 選擇操作:從右上角下拉清單中停用 > 按一下提交。
Magento 模組的結構
程式碼池
Magento 包含三種類型的程式碼池,Magento 的所有自訂模組和核心模組都駐留在其中。
- 核心池包含預設情況下隨 Magento 安裝一起提供的所有核心模組。這些模組由 Magento 開發人員編寫。建議不要修改這些模組,因為每當您升級 Magento 安裝時,所有核心模組都會被覆蓋,並且您的修改將會遺失。
- 社群池包含由第三方程式設計師開發並透過 Magento Connect 安裝的所有模組(即自訂模組)。這些模組通常擴展核心模組並提供自己的功能,這些功能通常可以在 Magento 中的任何地方使用。
- 本機池包含將用於特定專案但不會在 Magento Connect 中讀取的所有自訂模組
因此,我們有兩種池選擇:社區池或本地池。由於我們正在開發自己的項目,因此我們將使用本地池,儘管使用社區池也沒有限制。
結構
Magento 模組由以下元件組成:
- 區塊包含用於在範本中顯示資料的函數。
- 模型包含模組的業務邏輯。
- 資源模型包含用於資料庫互動的函數。
- 控制器定義頁面佈局並封鎖文件,並在請求網址時載入。
- etc包含 XML 格式的配置文件,它告訴 Magento 模組有多少文件以及模組如何互動。
- 幫助程式包含用於定義常見業務邏輯(例如映像調整大小、驗證)的函數。這些函數可以在 Magento 應用程式的任何地方使用
- sql包含用於建立、修改或刪除 SQL 表的 SQL 腳本。
模組命名
我們需要為我們的模組命名。一般來說,Magento 模組名稱由兩個部分組成:<namespace></namespace>
作為作者或公司名稱,並選擇 <module></module>
作為實際模組名稱。
根據這些命名約定,我為我們的模組指定了 Chiragdodia_Mymodule 名稱。我們將在本系列中引用這個名稱。
程式碼設定和配置
讓我們根據上述結構建立目錄。前往 Magento 安裝目錄,然後導航至 app/code/local
並建立如下所示的目錄。

下一步,我們將透過在app/etc/modules
目錄中建立設定檔Chiragdodia_Mymodule.xml
來配置並啟動我們的模組。 該目錄包含所有模組的設定檔。
<?xml version="1.0"?> <config> <modules> <Chiragdodia_Mymodule> <active>true</active> <codePool>local</codePool> </Chiragdodia_Mymodule> </modules> </config>
該檔案將告訴 Magento 我們模組的位置。在 active
標籤中,我們指定了 true
來啟用我們的模組。如果到目前為止一切都正確,那麼您將在 Magento 管理面板 > 系統 > 配置 > 進階 > 進階 > 停用模組輸出清單中找到您的模組。從這裡您可以啟用和停用您的模組。
入門:開發
接下來我們將建立模組設定檔。該文件將告訴 Magento 有關我們模組的所有資訊。這包括我們的模組包含多少個檔案、什麼類型的檔案(模型、幫助程式、資料庫類別)等等。
前往app/code/local/Chiragdodia/Mymodule/etc
並建立一個config.xml
## 將包含以下內容的文件
<?xml version="1.0"?> <config> <modules> <Chiragdodia_Mymodule> <version>0.1.0</version> <!-- Version number of your module --> </Chiragdodia_Mymodule> </modules> <frontend> <routers> <mymodule> <use>standard</use> <args> <module>Chiragdodia_Mymodule</module> <frontName>mymodule</frontName> </args> </mymodule> </routers> </frontend> </config>讓我們逐行了解每個標籤。這裡,第一個標籤是
<module></module>
,它包含我們模組的名稱和版本。在更新模組時版本號非常重要。
<frontend> 標籤將告訴 Magento 有關調度的控制器的資訊。在 </frontend>
<frontend> 標籤內,我們定義了 </frontend>
<routers> ,它告訴 Magento 如何透過路由機制存取我們的控制器。 </routers>
<mymodule> 標籤中,我們在</mymodule>
<module></module>
<frontname># 中的標籤和前端名稱。透過使用前端名稱,我們可以在前端存取我們的模組,例如 </frontname>
yoursitename.com/index.php/mymodule/index。
yoursitename.com/index.php/mymodule 或
yoursitename.com/index.php/mymodule/index Magento 將尋找模組控制器的索引操作檔。因此,我們需要建立控制器文件。
app/code/local/Chiragdodia/Mymodule/controllers 並建立檔案IndexController.php
# 包含以下內容。
<?php class Chiragdodia_Mymodule_IndexController extends Mage_Core_Controller_Front_Action { public function indexAction() { echo "Hello tuts+ World"; } }現在打開 URL
yoursite.com/index.php/mymodule/index 它將列印 「Hello tuts World」。 太棒了 - 我們終於完成了第一個 hello world 模組。
這裡我們擴充了類別
Mage_Core_Controller_Front_Action ,其中包含在URL路由中使用的所有方法。 Magento 類別名稱反映了類別檔案的位置。因此,類別 Mage_Core_Controller_Front_Action
位於位置 Mage > Core > Controller > Front > Action.php
Chiragdodia_Mymodule_IndexController。 Magento 控制器的命名方式應反映
(tag)_(Action Controllername)(keyword Controller).<module></module>
-
#tag =
Chiragdodia_Mymodule (我們在
config.xml中定義了此標籤)
b> 操作 - 控制器名稱
= 索引
操作控制器後面接著 - Controller
關鍵字
Chiragdodia_Mymodule_IndexController
現在查看遵循以下路由模式的 URL 模式yoursite.com/index.php/frontendname/actionControllername/actionmethod#
- 前端名称 = mymodule
- actionControllername = 索引
- actionmethodname = 索引
根据此网址模式,我们模块的网址为 yoursite.com/index.php/mymodule/index/index
。您还可以使用 yoursite.com/index.php/mymodule
访问它,因为只要您未指定 actionController
或 actionmethod
名称,Magento 就会加载默认情况下的索引控制器和索引操作。
现在让我们再创建一个操作:testAction
。
<?php class Chiragdodia_Mymodule_IndexController extends Mage_Core_Controller_Front_Action { public function indexAction() { echo "Hello tuts+ World"; } public function testAction() { echo "test action"; } }
我们可以使用 URL yoursite.com/index.php/mymodule/index/test
访问 testAction。 如前所述
- 前端名称 = mymodule
- actionControllername = 索引
- actionmethodname = 测试
这就是控制器在 Magento 中的工作原理。
一开始,一次理解所有内容可能很困难,因此我已将所有源代码包含到此模块中,以便您可以在将其用作指南的同时查看它并实现自己的工作。
下一步是什么?
在下一部分中,我们将通过创建布局和块文件来填充模块中的一些布局。我们将了解布局文件在 Magento 中如何工作以及块在 Magento 上下文中扮演什么角色。
在此之前,请创建您自己的模块,并让我知道任何给您带来麻烦的事情。
以上是為 Magento 開發自訂模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP可以輕鬆創建互動網頁內容。 1)通過嵌入HTML動態生成內容,根據用戶輸入或數據庫數據實時展示。 2)處理表單提交並生成動態輸出,確保使用htmlspecialchars防XSS。 3)結合MySQL創建用戶註冊系統,使用password_hash和預處理語句增強安全性。掌握這些技巧將提升Web開發效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP在現代Web開發中仍然重要,尤其在內容管理和電子商務平台。 1)PHP擁有豐富的生態系統和強大框架支持,如Laravel和Symfony。 2)性能優化可通過OPcache和Nginx實現。 3)PHP8.0引入JIT編譯器,提升性能。 4)雲原生應用通過Docker和Kubernetes部署,提高靈活性和可擴展性。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

禪工作室 13.0.1
強大的PHP整合開發環境