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