Magento Cheatsheet (IV) – 创建模块

本章要点

  • 创建模块文件
  • 注册块(block)、帮助器(helpers)和模型(models)
  • 添加新页面
  • 添加布局(layout)文件
  • 添加翻译文件
  • 添加新产品的块
  • 重写一个核心类(core class)

1. 创建模块文件

进入 app/code/local 文件夹,如不存在创建之(一般开始的时候是空的)。

第一步:创建如下目录(这里 Packt 是教材定义的命名空间,Helloworld 是模块的名称):
  1. app/code/local/Packt
  2. app/code/local/Packt/Helloworld
  3. app/code/local/Packt/Helloworld/etc
第二步:注册模块,在 app/etc/modules 创建 Packt_Helloworld.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<config>
  <modules>
    <Packt_Helloworld>
      <active>true</active>
      <codePool>local</codePool>
    </Packt_Helloworld>
  </modules>
</config>
第三步:在模块的主配置文件 app/code/local/Packt/Helloworld/etc/config.xml 里面加入如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<config>
  <modules>
    <Packt_Helloworld>
      <version>0.0.1</version>
    </Packt_Helloworld>
  </modules>
</config>
第四步:在后台的 系统 => 配置 => 高级 里面检查模块是否已经加入在列表中。注意要清除一下后台缓存。

注意,执行 wiz module-list 命令行里面就可以看到全部的模块和信息。

留意上述的的 codePool 属性,Magento 有三个 code pool:

  • Core: 这个是 Magento 的内核,建议决不要动它;
  • Community: 发布到社区的模块,很多情况下这些是你在社区里面下载的东西;
  • Local: 就是我们现在搞的,尽量都放这里;

2. 注册块(blocks)帮助器(helpers)和模型(models)

打开模块的 config.xml,然后做如下的动作:

第一步:在 <config> 标签里面加入:
<global>
  <blocks>
    <helloworld>
      <class>Packt_Helloworld_Block</class>
    </helloworld>
  </blocks>
</global>
第二步:创建文件夹 app/code/local/Packt/Helloworld/Block
第三步:同样的方法创建 helpers 和 models,config.xml 大致如下:
<global>
  <blocks>
    <helloworld>
      <class>Easecloud_Helloworld_Block</class>
    </helloworld>
  </blocks>
  <helpers>
    <helloworld>
      <class>Easecloud_Helloworld_Helper</class>
    </helloworld>
  </helpers>
  <models>
    <helloworld>
      <class>Easecloud_Helloworld_Model</class>
    </helloworld>
  </models>
</global>
第四步:同样方法创建 HelperModel 文件夹
第五步:在 app/code/local/Packt/Helloworld/Helper/Data.php 中加入如下内容:
<?php
class Packt_Helloworld_Helper_Data extends Mage_Core_Helper_Abstract {
}

如此即创建了一个 Helper 类。

第六步:命令行测试配置:
wiz devel-models
命名规则

以上,类的命名规则是:

# 命名空间 - 模块名称 - 对象类型 - 类名称

<Vendor Namespace>_<Modulename>_<Objectype>_<Classname>

Packt_Helloworld_Helper_Data
获取模型

调用 Mage::getModel() 函数可以载入一个模型。

第一个参数是类名称,举个例子:

要获取 Packt_Helloworld_Model_Sample 类,则需要调用 Mage::getModel('helloworld/sample') 来获取一个实例。

获取 helper 的话需要用类似的方法,调用 Mage::helper()

3. 添加新的页面

第一步:在 config.xml<config> 节下面添加如下标记:
<frontend>
  <routers>
    <helloworld>
      <use>standard</use>
      <args>
        <module>Easecloud_Helloworld</module>
        <frontName>helloworld</frontName>
      </args>
    </helloworld>
  </routers>
</frontend>
第二步:创建目录 app/code/local/Packt/Helloworld/controllers/

然后在里面创建文件 IndexController.php

第三步:编辑其内容,我们在里面添加两个 Action:
<?php
// IndexController.php
class Easecloud_Helloworld_IndexController extends Mage_Core_Controller_Front_Action {
    public function indexAction() {
    }
    public function helloAction() {
        echo 'Action hello in Helloworld IndexController';
    }
}
第四步:清除缓存,然后访问:

http://magento.local/helloworld/index/hello

这个访问 hellowAction 方法

http://magento.local/helloworld

这个访问 indexAction 方法

路由规则:
# 模块名称 / 控制器名称 / action 名称

<modulename or frontname>/<controllerName>/<actionName>

helloworld/index/hello

Magento 会自动识别以 Controller.php 结尾的文件,因此我们命名的文件名是 IndexController.php

同样,以 Action 结尾的方法名将会被自动识别。

如果我们需要渲染页面布局(layout),则需要在 Action 中调用如下两句
$this->loadLayout();
$this->renderLayout();

4. 添加布局文件(Adding a layout file)

第一步:在 config.xml<frontend> 标签下面加入:
<layout>
  <updates>
    <helloworld>
      <file>helloworld.xml</file>
    </helloworld>
  </updates>
</layout>
第二步:在 layout 文件夹里面加入 helloworld.xml 文件

路径位于:app/design/frontend/<package>/<theme>/layout/helloworld.xml

第三步:在里面加入内容并测试

【转载请附】愿以此功德,回向 >>

原文链接:https://www.huangwenchao.com.cn/2015/04/magento-cheatsheet-4.html【Magento Cheatsheet (IV) – 创建模块】

发表评论

电子邮件地址不会被公开。 必填项已用*标注