如果你在本机的虚拟目录下建立了自己的magento项目,这里以项目名为magento为例,那么访问:

http://localhost/magento/index.php/customer/account/create/ 将进入用户注册界面。

下面就从URL尝试分析Magento调用该页面的过程

  1. 1. URL中的customer表明当前访问的模块是customer,自动定位到: app\code\core\Mage\Customer
  2. 2. URL中的account表明当前访问的控制器文件为AccountController.php app\code\core\Mage\Customer\controllers\AccountController.php
  3. 3.URL中的create表明当前访问的php方法是createAction(),该方法在文件 app\code\core\Mage\Customer\controllers\AccountController.php
  4. 4. createAction()装载目录\app\design\frontend\default\default\layout\下名字和模块名相同的 layout文件,名字为customer.xml。然后寻找名字为<customer_account_create>的标签

Xml代码


<customer_account_create translate="label">
                <label>Customer Account Registration Form</label>
                <!-- Mage_Customer -->
                <remove name="right"/>
                <remove name="left"/>

                <reference name="root">
                    <action method="setTemplate"><template>page/1column.phtml</template></action>
                </reference>

                <reference name="content">
                    <block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml">
                        <block type="page/html_wrapper" name="customer.form.register.fields.before" as="form_fields_before" translate="label">
                            <label>Form Fields Before</label>
                        </block>
                    </block>
                </reference>
            </customer_account_create>

<reference name="root"> 用来说明你要使用的布局文件。

<reference name="content">下的block就是你定义的block

上面的block是默认定义,可以由customer/form_register推测出来,block类文件位置: app\code\core\Mage\Customer\Block\Form\Register.php

template属性可找出出相应的模板文件为: app\design\frontend\default\default\template\customer\form\register.phtml

通过这样的配置block和template就联系起来了,可以在template文件中使用$this来访问block类的方法。

下面我们实现一个新的block应用

1. 定义一个新的block文件:

app\code\core\Mage\Customer\Block\Form\Register1.php

                class Mage_Customer_Block_Form_Register1 extends Mage_Directory_Block_Data{  
                public function getHello(){  
                  return "Hello Block";  
               }  
         }

2. 定义template文件:

app\design\frontend\default\default\template\customer\form\register1.phtml

Html代码:

<?php echo $this->getHello(); ?>

3. 修改customer.xml配置

将Xml代码

<block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml"/>

修改为:

<block type="customer/form_register1" name="customer_form_register1" template="customer/form/register1.phtml"/>

360magento提供专业的基于magento系统的电商网站开发服务,如有需求或相关咨询,请与我们联系