Sunday, March 11, 2012

Magento目录结构和说明

1:文件目录结构:请见上图。

2、URL路由与分发器:Magento 也采用单入口文件模式,根据不同参数调用相应的模块。


例如: http://127.0.0.1/index.php/customer/account/login改地址

(1)首先接收customer 参数,根据该参数查找到app/code/core/mage/customer 模块。

(2)接着查找第二个account参数,我们继续在customer模块下查找。该参数默认调用customer 模块下的controller/AccountController.php 文件。


(3)接着查找第三个login参数,相信你已经明白了吧!在controller/AccountController.php 下的loginAction方法。为什么不是login方法?因为是基于zend framework 框架。方法名称后台需要加Action。

3、根据调用方法查找模板:我们继续使用上面的例子, 如果我们查找到customer模块, 对应的模板目录在app/design/frontend/default/你的主题/layout/customer.xml , 如果不存在该文件,系统会向app/design/frontend/default/default/layout/customer.xml ,如果该目录还不存在会向app/design/frontend/base/default/layout/customer.xml 查找。找到该文件后 根据account 参数,magento会查找的标签。 根据login参数,magento会查找的标签,并加载里面相应的区块。 如果不明白没有关系,在此你只需要知道如何根据URL参数调用对应的xml文件即可。

4、模板调用对应的js、css、图片:模板是如何加载这些文件的呢?Js 和css文件是通过app/design/frontend/default/你的主题/layout/page.xml 文件加载的。当然也可以直接写到模板文件里。加载的js和css目录放在 /skin/fronted/default/你的主题/ 下。如果不存在该目录,会向/skin/fronted/base/default/ 目录查找。跟模板的继承机制是一样。

5、重写核心模块: 如果你要修改app/code/core/mage/customer/controller/AccountController.php 文件.

(1)你可以复制AccountController.php这个文件放到app/code/local/Company/customer/controller/AccountController.php 。

(2)app/code/local/Company/customer/etc/customer.xml 。

(3)重写controller类 require_once “Mage/Checkout/controllers/OnepageController.php”;
class Company_Xcheckout_OnepageController extends Mage_Checkout_OnepageController

6、Magento文档结构说明

/app – 程序根目录

/app/etc – 全局配置文件目录

/app/code – 所有模块安装其模型和控制器的目录

/app/code/core – 核心代码或经过认证得模块,如果要升级不要这里的代码

/app/code/community – 社区版的模块目录

/app/code/local – 定制代码目录

/app/code/core/Mage – magento默认命名空间


/app/code/core/Mage/{Module} – 模块根目录


/app/code/core/Mage/{Module}/etc – 模块的配置文件目录


/app/code/core/Mage/{Module}/controllers – 模块的控制器


/app/code/core/Mage/{Module}/Block– 显示块的逻辑类


/app/code/core/Mage/{Module}/Model– 模块的对象模型


/app/code/core/Mage/{Module}/Model/Mysql4 – 模块的资源模型


/app/code/core/Mage/{Module}/sql – 模块各个版本的安装和升级用sql


/app/code/core/Mage/{Module}/sql/{resource}/- 升级是需要的资源模型


/app/code/core/Mage/{Module}/sql/{resource}/{type}-{action}-{versions}.(sql|php) – 资源升级文件 例如: mysql4-upgrade-0.6.23-0.6.25.sql


/app/design – 设计包目录 (layouts, templates, translations)

/app/design/frontend – 前端的设计

/app/design/adminhtml – 后台管理设计

/app/design/{area}/{package}/{theme} – 定制的主题

/app/design/{area}/{package}/{theme}/layout – 定义显示块的 .xml 文件

/app/design/{area}/{package}/{theme}/template – .phtml (html with php tags)模版

/app/design/{area}/{package}/{theme}/locale – Zend_Translate 兼容的主题用的文字翻译

/app/locale – 本地化文件

/app/locale/{locale (en_US)} – Zend_Translate 兼容的模块用的文字翻译

/skin/{area}/{package}/{theme}/- css和图像

/lib – 公用库

/js – javascripts

/media – 上传文件存放目录

/tests – 测试目录

/var – 临时文件目录
控制器的开发使用说明
模块通过控制器来提供接口,控制器对于一个模块来说并不是必需的比如 察看订单的url是 efish.tk/sales/order/view/order_id/77/ 其中这个sales是入口的名称(frontName),order是控制器的名字,view是action名(控制器类中的方法名),order_id参数名,77参数值对应的配置文件

No comments:

Post a Comment