magento模块的建立
所有路径都是从根目录开始的:
1.建立模块的配置文件:
路径:app/etc/models/下建一个文件(模块名称是Orderlottery)为Bf170_Orderlottery.xml,内容如下:
<?xml version="1.0"?>
<!--
/*
* NOTICE OF LICENSE
*/
-->
<config>
<modules>
<Bf170_Orderlottery>
<active>true</active>
<codePool>local</codePool>
</Bf170_Orderlottery>
</modules>
</config>
2.开始建立模块,建立模块需要建立几个文件夹:
路径:app/code/local/Bf170/Orderlottery/下建立模块需要的文件夹:
1>Block
2>controllers
3>etc
4>Helper
5>Model
6>sql
文件夹建立好之后开始对模块orderlottery建配置文件adminhtml.xml和config.xml:
首先对config.xml文件来配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!--
* NOTICE OF LICENSE
*
-->
<config>
<modules>.................................................................................................模块
<Bf170_Orderlottery>.............................................................................模块版本
<version>1.0.0</version>
</Bf170_Orderlottery>
</modules>
<global>....................................................................................................全局
<helpers>..............................................................................................辅助功能
<orderlottery>
<class>Bf170_Orderlottery_Helper</class>
</orderlottery>
</helpers>
<blocks>..............................................................................................页面block
<orderlottery>
<class>Bf170_Orderlottery_Block</class>
</orderlottery>
</blocks>
<models>.............................................................................................表对象
<orderlottery>
<class>Bf170_Orderlottery_Model</class>......................................表对象类
<resourceModel>orderlottery_mysql4</resourceModel>....................表对象资源
</orderlottery>
<orderlottery_mysql4>
<class>Bf170_Orderlottery_Model_Mysql4</class>
<entities>
<item>
<table>orderlottery_item</table>
</item>
</entities>
</orderlottery_mysql4>
</models>
<resources>.......................................................................................资源
<orderlottery_setup>
<setup>
<module>Bf170_Orderlottery</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</orderlottery_setup>
<orderlottery_write>.......................................................................可写
<connection>
<use>core_write</use>
</connection>
</orderlottery_write>
<orderlottery_read>.......................................................................可读
<connection>
<use>core_read</use>
</connection>
</orderlottery_read>
</resources>
<events>.........................................................................................加载的事件(事件放在不同位置,使用的地方也不一样,可放admin,global,frontend)
<events/>
</global>
<frontend>..........................................................................................前台
<routers>
<orderlottery>
<use>standard</use>
<args>
<module>Bf170_Orderlottery</module>
<frontName>orderlottery</frontName>
</args>
</orderlottery>
</routers>
<layout>.........................................................................................这个模块所加载的模板
<updates>
<orderlottery module="Bf170_Orderlottery">
<file>orderlottery.xml</file>
</orderlottery>
</updates>
</layout>
</frontend>
<adminhtml>.........................................................................................后台
<!-- 相应的adminhtml定义挪到了adminhtml.xml -->
</adminhtml>
<admin>
<routers>
<orderlottery_adminhtml>
<use>admin</use>
<args>
<module>Bf170_Orderlottery_Adminhtml</module>
<frontName>orderlottery_adminhtml</frontName>
</args>
</orderlottery_adminhtml>
</routers>
</admin>
</config>
现在对adminhtml.xml文件来配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!--
* NOTICE OF LICENSE
*
-->
<config>
<menu>...........................................................................................................后台菜单
<orderlottery translate="title" module="orderlottery">......................................这里名称自定义
<title>后台插件练习</title>..........................................................................菜单名称
<sort_order>9999</sort_order>...............................................................位置
<children>
<item_index translate="title" module="orderlottery">...............................主菜单的子菜单
<title>信息查询</title>
<sort_order>100</sort_order>
<action>orderlottery_adminhtml/item/index</action>..........................点击所访问的路径
</item_index>
</children>
</orderlottery>
</menu>
<acl>..............................................................................................................权限
<resources>
<admin>
<children>
<orderlottery translate="title" module="orderlottery">
<title>后台插件练习</title>
<sort_order>120</sort_order>
<children>
<manage translate="title">
<title>管理</title>
<sort_order>0</sort_order>
</manage>
</children>
</orderlottery>
</children>
</admin>
</resources>
</acl>
</config>
把以上两个文件配置完成之后你就可以到后台看到这个模块就已经启动了,菜单也会加载出来.
3.现在接下来就是对这个模块的"表"对象进行建立了.
在建立表之前先需要建几个文件(就是这张表对象,這张表名是orderlottery_item)
1> 需要在Model這个文件夹里建文件夹 Mysql4和文件Item.php(Item.php的内容如下)
<?php
/*
* NOTICE OF LICENSE
*/
class Bf170_Orderlottery_Model_Item extends Mage_Core_Model_Abstract {
// 如果需要相应的事件相应逻辑
protected $_eventPrefix = 'orderlottery_item';
//=============== Internal Processing (automatic) ============= //
protected function _construct() {
// 指向相应的 Resource (Model)
$this->_init('orderlottery/item');
}
// 一般在保存前,赋予更新时间(初次保存,赋予创建时间)
protected function _beforeSave() {
parent::_beforeSave();
//For new object which does not specify 'created_at'
if(!$this->getId() && !$this->getData('created_at')){
$this->setData('created_at', now());
}
//Always specify 'updated_at'
$this->setData('updated_at', now());
return $this;
}
2> 在Mysql4文件里建好Item文件夹和文件Item.php,内容如下:
<?php
/*
* NOTICE OF LICENSE
*/
class Bf170_Orderlottery_Model_Mysql4_Item extends Mage_Core_Model_Mysql4_Abstract {
// 指向相应的 Table以及Primary ID
protected function _construct() {
$this->_init('orderlotteryt/item', 'entity_id');
}
}
3> 在Item文件夹里建好Collection.php,内容如下:
<?php
/*
* NOTICE OF LICENSE
*/
class Bf170_Orderlottery_Model_Mysql4_Item_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {
public function _construct() {
$this->_init('orderlottery/item');
}
}
4> 在sql文件夹里建立文件夹orderlottery_setup,再在orderlottery_setup这个文件夹里建一个文件mysql4-install-1.0.0.php,这个文件内容如下:
<?php
/*
* NOTICE OF LICENSE
*/
$installer = $this;
$installer->startSetup();
$installer->run("
-- DROP TABLE IF EXISTS {$this->getTable('orderlottery_item')};
CREATE TABLE {$this->getTable('orderlottery_item')} (
`entity_id` int(10) unsigned NOT NULL auto_increment COMMENT 'Entity ID',
`product_id` int(10) unsigned COMMENT 'Product ID',
`price` decimal(12, 4) COMMENT 'Price',
`name` varchar(255) COMMENT 'Name',
`status` smallint(5) unsigned COMMENT 'Status',
`created_at` timestamp NULL COMMENT 'Created At',
`updated_at` timestamp NULL COMMENT 'Updated At',
PRIMARY KEY (`entity_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='这张表的注释';
");
$installer->endSetup();
未完待续。。。。。
magento模块的建立的更多相关文章
- Magento模块升级修改数据库表结构
Magento支持在模块中创建.删除.更新数据库表及字段.通过该方式,在插件开发的过程中,添加和修改字段变成了一件非常轻松的事情.只需要修改模块的版本号,同时在文件中添加一个符合命名规则的脚本就可以了 ...
- Drupal 7 模块开发 建立模块帮助信息(hook_help)
建立模块请參考 <Drupal 7 模块开发 建立> 假设你要支持中文,文件格式必须保存为 UTF-8.NO BOM ------------------------------ hook ...
- Magento 模块开发之DispatchEvent
在这一章节中.我们来了解 Magento 中的事件分发机制 Mage::dispatchEvent() 在创建自己的模块时, Event 事件的分发将会变成十分实用且有效 以个人的经验. 事件的分发使 ...
- 如何创建magento模块z之Hello World例子(转)
步骤:1.创建一个Hello World模块2.为这个模块配置路由3.为这个模块创建执行控制器 创建Hello World模块 创建模块的结构目录:app/core/local/Sjolzy/Hell ...
- Magento开发文档(一):Magento入门
开始之前,首先声明下,Magento开发者手册由Alan Storm发表在Magento官方网站上.总共分八个部分,由浅入深的介绍了Magento的MVC架构及Magento中使用的比较特殊的EAV模 ...
- Magento 使用心得
Modules->模块 Controller->控制器 Model->模型 Magento是这个星球上最强大的购物车网店平台.当然,你应该已经对此毫无疑问了.不过,你可能还不知道,M ...
- Magento入门开发教程
Modules->模块 Controller->控制器 Model->模型 Magento是这个星球上最强大的购物车网店平台.当然,你应该已经对此毫无疑问了.不过,你可能还不知道,M ...
- Magento强大的配置系统
Magento的配置系统就像是Magento的心脏,支撑着Magento的运行.这套配置系统掌管着几乎所有"module/model/class/template/etc".它把整 ...
- Magento WebServices SOAP API 创建和使用
首先 SOAP 简介: http://baike.baidu.com/view/1695890.htm?fromtitle=SOAP 然后简单介绍下Magento API.Magento API干啥用 ...
随机推荐
- vi/vim多行注释和取消注释
多行注释: 1. 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来 2. 按大写字母I,再插入注释符,例如// 3. 按esc键 ...
- Linux Shell 示例精解(第七章 gawk编程)转载
第七章 gawk功能:gawk编程 7.1.1 数字和字符串常量 初始化和类型强制 在awk中,变量不需要定义就可以直接使用,使用一个变量就是对变量的定义.变量的类型可以试数字.字符串,或者 ...
- c#编写的基于Socket的异步通信系统
c#编写的基于Socket的异步通信系统 SanNiuSignal是一个基于异步socket的完全免费DLL:它里面封装了Client,Server以及UDP:有了这个DLL:用户不用去关心心跳:粘包 ...
- vs2012快速将项目托管到github
vs2012快速将项目托管到github 在VS2012中使用GitHub 注册GitHub账号(DeanZhouLin) https://github.com/ 向GitHub中添加一个仓库(T ...
- mvc项目如何在IIS7.5
mvc项目如何在IIS7.5上发布的 1.在vs中打开你要发布的项目,右键属性找到发布 2.弹出发布web对话框,选择<新建配置文件...> 在弹出的对话框中输入一个配置文件名称,后确定 ...
- Factovisors - PC110704
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/uva10139.html 原创: 作者: ...
- 有关sort函数的用法
最近碰到这个sort函数,网上查了一些资料,感觉还是直接扔给我代码比较好理解些 要是像我一样的童鞋,建议看这里:http://www.cplusplus.me/265.html 个人认为很好理解..这 ...
- [转]unload dynamic library needs two dlclose() calls?
src: http://stackoverflow.com/questions/8793099/unload-dynamic-library-needs-two-dlclose-calls Quest ...
- wpf中数据绑定(Datacontext)的应用
在winform开发中,我们常用到ado.net进行数据绑定,在编程技术日新月异的今天,这种繁杂的数据绑定方式已不能再适合开发人员,于是微软推出了wpf,更炫的界面美化,更简洁地编写控件,在wpf中使 ...
- mmap学习
mmap学习 内存页: Linux是以页为单位来管理物理内存的,一页大小一般等于4096字节.页容量越大,系统中可能存在的内存碎片就越多. mmap将一个磁盘上的文件或者对象映射进内存.文件被映射到多 ...