你现在的位置:首页 > PHP网站建设知识库 > magento > 正文

magento开发之基本URL结构解析

magento开发的模块名称叫Module。模块的功能是扩展magento的功能,使系统更加强健。

经过对核心代码的分析,我们可以看出:从访问路径看,Magento扩展共有两种展现形式: 

1. 作为一个完整的页面,从浏览器地址栏访问新开发的模块。 
2. 作为页面的一个片段、区块block,嵌入到现已有的网页中。 

\

下面的例子是以一个完整的页面URL来呈现模块。 
案例假设公司名称为Cartz, 现在要为该公司编写一个旅馆预订的模块。

步骤 I: 建立模块 目录及文件结构骨架。 
目录结构

【Magento】
app
- etc/
- modules/
Cartz_Hotel.xml
- code/
  - local/
    - Cartz/
      - Hotel/
        - controllers/ 
          MyController.php
        - etc
          config.xml

步骤 II: Cartz_Hotel.xml

    <config>  
    <modules>  
       <Cartz_Hotel>  
          <active>true</active>  
          <codePool>local</codePool>  
          <version>0.1.0</version>  
       </Cartz_Hotel>  
    </modules>  
    </config>   

该文件的目的是让Magento系统载入该模块 。<active>标签为true表示使该模块 生效。注意标<Cartz_Hotel>是命名约定,从而约束了你的代码应该放在app/code/Cartz/Hotel目录下。

步骤 III: MyController.php

    <?php  
    class Cartz_Hotel_MyController extends Mage_Core_Controller_Front_Action{  
    public function helloAction() {  
       echo "My First Module";  
    }  
    }   

类 名构成: 前缀(Cartz_Hotel)加上文件的名字(IndexController),然后要求扩展基类 Mage_Core_Controller_Front_Action。稍后我们要看看如何调用indexAction方法来输出“My First Module”.

步骤 IV: config.xml

    <?xml version="1.0"?>  
    <config>  
    <modules>  
    <Cartz_Hotel>  
    <version>0.1.0</version>  
    </Cartz_Hotel>  
    </modules>  
    <frontend>  
    <routers>  
    <hotel>  
    <use>standard</use>  
    <args>  
    <module>Cartz_Hotel</module>  
    <frontName>hotel</frontName>  
    </args>  
    </hotel>  
    </routers>  
    </frontend>  
    </config>   

frontend/routers/用来设置使该模块 从前端显示的入口。 
假设Magento在本机安装的访问首页是http://localhost/magento/index.php, 那么在浏览器地址栏中输入

http://localhost/magento/index.php/hotel/my/hello

将在页面输入"My First Module"

从而得出Magento模块 url访问的命名规范

http://

<host>/<Magento虚拟目录>/<config.xm中的frontName>/<Controller文件名去掉Controller>/<Controller>