博客

Magento 二次开发系列九 — 新模块开发

【php教程】Magento 二次开发系列九 — 新模块开发

上一节提到了一个新的模块,本节将展示如何自己新增个模块。

1.首先确定模块名称,本节要建的模块是Extends,放在目录app/code/local/App/下,即app/code/local/App/Extends;
2.在目录Extends新建文件夹:Model,etc,Helper,sql,controllers;
3.app/etc/modules/目录下新增文件App_Extends.xml,注意这里的文件名称和步骤1中的路径和模块名对应,文件代码为:

<?xml version=”1.0″ encoding=”UTF-8″?>
<config>
<modules>
<App_Extends>
<active>true</active>
<codePool>local</codePool>
</App_Extends>
</modules>
</config>

到网站后台->系统->配置页面,点击左侧栏目高级->高级,就可以看到新增加的模块已经出现在列表中,点击保存配置,显示如下
ext01

4.新建配置文件Extends/etc/config.xml,
代码如下

<?xml version=”1.0″?>
<config>
<modules>
<App_Extends>
<version>0.1.0</version>
</App_Extends>
</modules>
<global>
<resources>
<extends_setup>
<setup>
<module>App_Extends</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</extends_setup>
<extends_write>
<connection>
<use>core_write</use>
</connection>
</extends_write>
<extends_read>
<connection>
<use>core_read</use>
</connection>
</extends_read>
</resources>
<models>
<extends>
<class>App_Extends_Model</class>
<resourceModel>extends_mysql4</resourceModel>
</extends>
<extends_mysql4>
<class>App_Extends_Model_Mysql4</class>
<entities>
<product>
<table>extends_product</table>
</product>
</entities>
</extends_mysql4>
</models>

<blocks>
<extends>
<class>App_Extends_Block</class>
</extends>
</blocks>
<helpers>
<extends>
<class>App_Extends_Helper</class>
</extends>
</helpers>
</global>

<frontend>
<routers>
<extends>
<use>standard</use>
<args>
<module>App_Extends</module>
<frontName>extends</frontName>
</args>
</extends>
</routers>
</frontend>
</config>

5.新建目录Extends/sql/extends_setup,目录下新建文件mysql4-install-0.1.0.php,代码参考:

$installer = $this;
$installer->startSetup();
$installer->run(”
– DROP TABLE IF EXISTS {$this->getTable(‘extends_product’)};
CREATE TABLE {$this->getTable(‘extends_product’)} (
….细节省略
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
“);
$installer->endSetup();

6.目录Extends/Model下新建文件Product.php,为什么也叫这个名字呢,因为这个类的功能是对系统Product的功能扩展,文件名同名方便记忆代码如下:

class App_Extends_Model_Product extends Mage_Core_Model_Abstract
{
public function _construct()
{
parent::_construct();
$this->_init(‘extends/product’);
}

public function createExtend(Mage_Core_Model_Abstract $object){
……省略逻辑代码
}
}

注意类名与文件路径的对应关系,构造函数_construct()中的初始化,这个’extends/product’也与模块名对应,它对应的数据库表的名称在config.xml中指定。方法createExtend()就是我们之前在afterCommitCallback()回调函数中调用方法;

7.Helper目录下建立新文件Data.php,代码如下:

class App_Extends_Helper_Data extends Mage_Core_Helper_Abstract
{
}

8.新建目录Model/Mysql4,目录下新建文件Product.php,这个文件是进行数据库表与模块数据源的关联,就是表的实体映射,代码如下:

class App_Extends_Model_Mysql4_Product extends Mage_Core_Model_Mysql4_Abstract
{
public function _construct()
{
$this->_init(‘extends/product’, ‘extends_id’);
}
}

代码中的‘extends_id’是实体的主键。

9.新建目录Model/Mysql4/Product,目录下新建文件Collection.php,这个文件是进行数据库表的数据进行集合的映射,代码如下:

class App_Extends_Model_Mysql4_Product_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
public function _construct()
{
parent::_construct();
$this->_init(‘extends/product’);
}
}

10.controllers目录下新建文件IndexController.php,这个是控制层文件,代码如下:

class App_Extends_IndexController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{

}
}

这个controllers文件目录我们这里其实用不到,为了展示全面的模块开发,所以列了出来展示下,通过url访问路径为:http://{你的ip或域名}/extends/index就能访问上面的这个index方法了,extends是模块名,index是方法(action),对应的代码函数就是indexAction(),这是Magento的规则,记住就行了;

11.最后看下完整的目录结构,如图
ext02

通过本节的学习,你应该可以独立建立自己的模块了。

注:此文为原创,如转载请注明出处。