從頭開始建立模組(Hello World)
Magento 自定義模組開發是任何 Magento 開發或 Magento 專案的核心部分,因為在任何階段你都可能希望將自己的功能/模組整合到現有的 Magento 專案中。
開發人員應該禁用的第一件事是系統快取。否則,開發將變得很痛苦,因為任何更改都需要重新整理。從 magento 管理面板:導航到 System > Cache Management > Select All > Actions : Disable.
使用以下指南建立新模組:
-
在
app/code/local/
中建立一個資料夾 - 命名約定通常採用你公司的名稱,例如app/code/local/<YOUR_COMPANY>
。 -
現在我們有一個模組的自定義位置。建立另一個目錄,將其稱為與你要建立的模組型別相關的內容,例如 app / code / local / <YOUR_COMPANY> / HelloWorld / - 我將稱之為
HelloWorld
。 -
這個目錄需要一個
config.xml
,所以 Magento 將它識別為一個新模組。建立另一個名為etc
的資料夾。接下來是一個名為 config.xml 的 xml 檔案。該目錄應該看起來像app/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml
這是 xml 檔案的結構:<?xml version="1.0" encoding="UTF-8" ?> <config> <modules> <YOUR_COMPANY_HelloWorld> <version>0.0.1</version> </YOUR_COMPANY_HelloWorld> </modules> </config>
-
接下來,需要向 Magento 宣告模組。繼續
app/etc/modules
。建立另一個 XML 文件併為其選擇標籤名稱:YOUR_COMPANY_HelloWorld
就我而言。在這份檔案中寫道:<?xml version="1.0" encoding="UTF-8"?> <config> <modules> <YOUR_COMPANY_HelloWorld> <!-- Whether our module is active: true or false --> <active>true</active> <!-- Which code pool to use: core, community or local --> <codePool>local</codePool> </YOUR_COMPANY_HelloWorld> </modules> </config>
-
配置和模組標籤再次用於向 Magento 宣告一個新模組。Active 是預設值,可以在
Admin Panel under System > Configuration > Advanced
中訪問。codePool
告訴 Magento 在我們的情況下檢視哪個目錄 .local
-
該模組現已建立,因此我們的 MVC 結構模型。你應該可以在
System > Configuration > Advanced
下的管理面板中看到你的新模組。但是,它還沒有做任何事情! 你需要返回我們的 config.xml 檔案並定義 XML 元素。 -
繼續教程; 我們將使用其中一些 XML 元素來建立類並操作我們站點前端的所有頁面。回到
config.xml
檔案,在</modules>
標籤下面寫下:<global> <!-- adding a new block definition --> <blocks> <!-- A unique short name for our block files --> <helloworld> <!-- the location of our modules block --> <class>YOUR_COMPANY_HelloWorld_Block</class> </helloworld> </blocks> </global> <!-- We are making changes to the frontend --> <frontend> <!-- We are making changes to the layout of the front end --> <layout> <!-- we are adding a new update file --> <updates> <!-- Creating the name of our update and linking it the module --> <helloworld module="YOUR_COMPANY_HelloWorld"> <!-- The name of the layout file we are adding --> <file>helloworld.xml</file> </helloworld> </updates> </layout> </frontend>
-
正如你所看到的,我們不斷擴充套件而不是操作核心檔案。
helloworld
標籤是小寫的,因為它將指向 Handle,為了連續性,我們將儘可能地命名。然後我們將其連結到YOUR_COMPANY_HelloWorld
模組。 -
我們正在改變佈局。因此,我們需要在佈局目錄中建立此 Handle。前往
app/design/frontend/base/default/layout
。我們告訴模組尋找helloworld.xml
檔案。因此,我們必須在此目錄中建立它。你在等什麼。做吧!! 並用以下內容填充:<?xml version="1.0" encoding="UTF-8"?> <!-- All Layout files begin with this code --> <layout> <!-- this is the layout handle. Default is handled on all pages. We want this module to execute on all pages --> <default> <!-- This is the block we want to bolt onto the existing before_body_end block --> <reference name="before_body_end"> <!-- We define our new block and template to be added to before_body_end --> <block name="helloworld_footer" template="helloworld/footer.phtml" type="helloworld/footer"/> </reference> </default> </layout>
-
現在那些擁有 Magento 經驗,或者已經閱讀了更多值得關注的 Magento 教程的人,可能會因為我們正在進行基本/預設更改而煩惱,因為這是 Magento 核心檔案所在的位置。但是,我們沒有在這裡修改任何檔案,我們正在建立新的檔案,而且我們在檔名前加上
helloworld
,因此很少有機會與其他模組發生衝突或導致升級 Magento 的任何問題。未來。快樂的時光! -
因為我們想要影響所有頁面,所以我們使用預設標籤並將其引用到
before_body_end
結構塊。這將扮演 Action 的角色並觸發我們的 MVC 結構的 View 部分。 -
現在我們知道我們正在使用
before_body_end
區塊。並將其連結到我們的自定義塊。這稱為引用,是一個鉤子。我們目前沒有把它掛鉤到現有的任何東西,因此我們必須建立必要的檔案。 -
在
helloworld.xml
,我們在模板中說了一個footer.phtml
。繼續app/design/frontend/base/default/template
並建立一個目錄helloworld
。 -
在這個目錄中建立
footer.phtml
檔案並用 HTML 填寫,本教程只是寫這個來顯示一些與我們的 PHTML 檔案連結的 PHP 功能:<p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>
-
我們現在需要建立自己的塊物件,以將模板與塊功能結合起來。建立目錄 app / code / local / YOUR_COMPANY / HelloWorld / Block /並在其中建立檔案
Footer.php
。這在我們的 zeta_layout.xml 中引用了“helloworld / footer”型別。使用以下命令填充此檔案:<?php class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template { public function getDate() { $date = date('Y-m-d'); return urlencode($date); } } ?>
-
這個功能將填充我們從
.phtml
檔案中呼叫的getDate()
。我們擴充套件了Mage_Core_Block_Template
。 -
此功能現已完成。通過轉到你的主頁進行測試,你應該在每個頁面的頁尾中看到你的模組!