Magento 自訂模組開發是任何 Magento 開發或 Magento 專案的核心部分,因為在任何階段您可能希望將自己的功能/模組整合到現有的 Magento 專案中。
在本系列中,我將介紹 Magento 自訂模組開發的詳細資訊。
如果您想進一步開發 Magento,請查看 Envato Market 上各種有用的 Magento 擴充功能。
在本系列中,我指的是 Magento 社群版 1.7,儘管是自訂版本 所有版本的 Magento 中的模組結構都是相同的。在開始實際的模組開發之前,讓我們快速了解 Magento 的基本結構。
每當您安裝新的 Magento 時,您都會注意到以下 Magento 目錄結構:
與 Joomla、CakePHP、CodeIgniter 等任何其他主要框架一樣,Magento 也遵循基於 MVC 的架構,儘管這與核心 PHP MVC 架構略有不同。在這裡,我將透過與簡單的 PHP MVC 架構進行比較來解釋 Magento 架構的差異。
在典型的 MVC 模式中,應用程式的流程如下所示:
index.php
- 整個應用程式路由機制從這裡確定。 Magento 的 MVC 架構在 MVC 模式的基礎上添加了幾層,但應用程式的基本控制流程如下:
index.php
- 整個應用程式將從這裡初始化。 最初,這可能很難理解,因為它包含一些額外的層。為了更熟悉控制流程,讓我們開發一個自訂的「Hello World」模組。
Magento 包含三種類型的程式碼池,Magento 的所有自訂模組和核心模組都駐留在其中。
因此,我們有兩種池選擇:社區池或本地池。由於我們正在開發自己的項目,因此我們將使用本地池,儘管使用社區池也沒有限制。
結構
Magento 模組由以下元件組成:
我們需要為我們的模組命名。一般來說,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
## < /i>將包含以下內容的文件
<?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>
,它包含我們模組的名稱和版本。在更新模組時版本號非常重要。
<frontend> 標籤將告訴 Magento 有關調度的控制器的資訊。在
<frontend> 標籤內,我們定義了
<routers> ,它告訴 Magento 如何透過路由機制存取我們的控制器。
<mymodule> 標籤中,我們在
<module>
< 中定义了模块名称i> <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"; } }
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>
(我們在
config.xml 中定義了此標籤)
b>
= 索引
關鍵字
Chiragdodia_Mymodule_IndexController
現在查看遵循以下路由模式的 URL 模式yoursite.com/index.php/frontendname/actionControllername/actionmethod#
根据此网址模式,我们模块的网址为 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。 如前所述
这就是控制器在 Magento 中的工作原理。
一开始,一次理解所有内容可能很困难,因此我已将所有源代码包含到此模块中,以便您可以在将其用作指南的同时查看它并实现自己的工作。
在下一部分中,我们将通过创建布局和块文件来填充模块中的一些布局。我们将了解布局文件在 Magento 中如何工作以及块在 Magento 上下文中扮演什么角色。
在此之前,请创建您自己的模块,并让我知道任何给您带来麻烦的事情。
以上是為 Magento 開發自訂模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!