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干啥用 ...
随机推荐
- SVN服务器搭建(2)
转自:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407979.html 上一篇介绍了VisualSVN Server和Tortois ...
- JQuery each详细用法
each()方法能使DOM循环结构简洁,不容易出错.each()函数封装了十分强大的遍历功能,使用也很方便,它可以遍历一维数组.多维数组.DOM, JSON 等等在javaScript开发过程中使用$ ...
- Javascript技巧实例精选(3)—用字符在屏幕上打印金字塔
用Javascript实现用★字符在屏幕上打印金字塔 >>点击这里下载完整html源码<< 这是最后的截图 这是相应的Javascript源码 //动态创建表格 var s=' ...
- 验证API
验证API 本篇定位在数据入口的验证 普通的DataAnnotation验证 基于场景的DataAnnotation验证 可修改的外置式DataAnnotation验证 SUMMARY 最终调用时的用 ...
- test maekdown 2
Package Control Messages Markdown Preview: Sublime Text 2/3 Markdown Preview ======================= ...
- python实现变参
使用赋值表达式传递参数,可以颠倒参数列表的顺序.函数的参数提供默认参数 参数可以是变量,也可以是元祖.列表等内置的数据结构 在程序开发中,常常需要传递可变长度的参数.在函数的参数前使用标识符“*”可以 ...
- elasticsearch文档-analysis
elasticsearch文档-analysis analysis 基本概念 全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干Token(词元), 这些算法称为Tokeniz ...
- HttpStack及其实现类
HttpStack及其实现类 前两篇已经对网络请求流程已经梳理了个大概,这次我们着重看一下HttpStack和它的其实现类.我们之前在Network篇讲过它仅有一个实现类,而今天我们讲的HttpSta ...
- EasyNet.Solr 4.4.0发布及例子
EasyNet.Solr 4.4.0发布及例子 EasyNet.Solr 4.4.0已经发布,可以直接从http://easynet.codeplex.com/ 下载试用并反馈.最新版本进行了以下改动 ...
- Go语言Web框架gwk介绍2
Go语言Web框架gwk介绍 (二) HttpResult 凡是实现了HttpResult接口的对象,都可以作为gwk返回Web客户端的内容.HttpResult接口定义非常简单,只有一个方法: ty ...