從頭開始建立模組(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

  • 此功能現已完成。通過轉到你的主頁進行測試,你應該在每個頁面的頁尾中看到你的模組!