`

Magento中xml和phtml的关系

阅读更多

magento官方模板开发指导
magento模板开发过程中比较让人迷惑的就是magento的结构控制,在这《magento模板中XML与phtml关系》一系列的文章中,我将对此进行入门的讲解。

在magento官网模板设计教程中已经初步讲解了模版中.xml与.phtml的关系。

模板文件分别存放于app和skin文件夹。app文件夹存放的是模板的结构文件。skin文件夹存放的是模版的css信息,也就是样式文件。

 

app文件夹下的模板文件夹的结构如下图

magento的app文件夹下的模版文件结构

layout文件夹存放的是此模板的.xml文件(也就是模版的结构文件),template是.phtml模板文件。

 

在layout的任何一个.xml文件中我们可以看到

123456789 <block type="page/html_header" name="header" as="header">     <block type="page/template_links" name="top.links" as="topLinks"/>     <block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>     <block type="core/text_list" name="top.menu" as="topMenu"/>     <block type="page/html_wrapper" name="top.container" as="topContainer" translate="label">         <label>Page Header</label>         <action method="setElementClass"><value>top-container</value></action>     </block> </block>
<default><action> <block><reference>
等标签,这些都是在控制magento各个页面的结构。

 

在template中的.phtml文件中我们可以看到

123 <div class="page">         <?php echo $this->getChildHtml('header') ?> ……..
 

这样的代码,可以看到html 并且声明一个css的class,这样在.phtml中就是在控制模板的样式。定义了css的class那么在skin的css文件就有用了。getChildHtml(‘header’)是在输出header这个block也就是说,在.phtml文件中我们对于XML文件中声明好的block进行输出,想输出在哪个div里面就在哪个div中使用getChildHtml(‘header’),也就是说phtml在对xml定义的结构进行进一步的细化,并且让css加入到模板的构建中来。

不要迷惑,看下总结

 

总结:

1. .xml与.phtml同样都在控制模板的结构,但是要先在.xml中声明下,才能在.phtml中使用getChildHtml( )函数输出摸一个结构模块。也就是xml在先,phtml在后。

2. .xml文件与phtml同样控制文件结构,但是phtml中使用html的控制结构标签如<div>,并且可以写上css的类。.phtml就是一个php文件。它对模板的结构使用div等html标签进行更详细的排版,并且引入css修饰样式。

 

二、

xml和phtml是怎么配合着来生成我们的magento模版的?

本次讲解,使用magento 1.4版本,使用base中的default模板。

例子是最快速了解magento的方式了,我们来看下magento头部的搜索框,是怎么显示出来的。

 

在:app\design\frontend\base\default\layout\catalogsearch.xml 中有声明定义

1234 <default>     <reference name="header">         <block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml"/>     </reference>
然后在:app\design\frontend\base\default\template\page\html\header.phtml 中调用输出

12 <div class="quick-access">            <?php echo $this->getChildHtml('topSearch') ?>

 

我们看到在XML中有代码片段 as=”topSearch”, 然后在phtml的 getChildHtml( )的参数就是topSearch,所以啊,这就是关键点。

我们要将这个搜索从模板的头部(header)移动到模板的底部(footer)怎么办呢?

那么就先将上面的XML中的<reference name=”header”> 改成<reference name=”footer”>,

 

然后将app\design\frontend\base\default\template\page\html\header.phtml中的<?php echo $this->getChildHtml(‘topSearch’) ?>删掉将其添加到:app\design\frontend\base\default\template\page\html\footer.phtml中的适当位置。

 

这个时候我们就发现

<reference name="header"> 对应的就是app\design\frontend\base\default\template\page\html\header.phtml文件
<reference name="footer"> 对应的就是app\design\frontend\base\default\template\page\html\footer.phtml

为甚么呢?

我们看下:app\design\frontend\base\default\layout\page.xml文件中的定义这个footer和header的代码片段
12345678910111213 <PRE class=brush:xml><block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">                 <block type="page/html_wrapper" name="bottom.container" as="bottomContainer" translate="label">                     <label>Page Footer</label>                     <action method="setElementClass"><value>bottom-container</value></action>                 </block>                 <block type="page/switch" name="store_switcher" as="store_switcher" template="page/switch/stores.phtml"/>                 <block type="page/template_links" name="footer_links" as="footer_links" template="page/template/links.phtml"/> </block></PRE> <P>看这第一行代码,就说的很清楚了,name="footer" 并且template="page/html/footer.phtml"。所以这个<reference name="footer">就是在<BR> 对footer.phtm中的getChildHtml( )进行定义。

分享到:
评论

相关推荐

    magento模板中XML与phtml关系

    Magento 模板系统是其强大和可...了解并熟练掌握XML和pHTML的关系,对于在Magento环境中高效工作至关重要,无论是进行定制开发还是进行模板调整。正确使用这两者,可以帮助创建出功能丰富、视觉吸引人的电子商务网站。

    Magento 常用方法和插件

    理解如何编写布局更新XML,以及如何在模板(.phtml)文件中调用模型、块和助手类的方法,是创建美观且功能丰富的前端界面的关键。 关于插件,Magento 1.x中的“重写”机制和Magento 2.x中的“插件(Interceptors)...

    magento中文开发教程

    3. **模块开发**:掌握创建新模块的步骤,包括编写XML配置文件、模型、资源模型、控制器、视图文件(PHTML、XML、CSS、JS)和语言包。理解模块的命名空间和版本控制对整个项目的重要性。 4. **模板与主题**:...

    magento创建动态菜单 Create Dynamic CMS Navigation For Magento Frontend

    为了将`navigation.phtml`插入到页面的正确位置,我们需要在Magento的布局XML文件中进行更新。例如,可以将这个菜单添加到头部或者侧边栏。布局更新通常在`local.xml`或特定主题的布局文件中完成。 5. **模板逻辑*...

    magento中block应用

    在Magento中,Block实例由布局XML文件定义,通过`&lt;block&gt;`标签创建,并指定其类型、名称和其他属性。然后,Magento会根据这些定义来实例化Block对象,执行构造函数和`_construct`方法,加载数据,最后调用`toHtml`...

    Magento2.3 最新中文开发文档

    * 需要熟悉CSS、CSS 3 和 LESS、HTML 和 HTML 5、XML、JavaScript、PHTML、PHP(基本)、响应式网页设计(RWD)。 Visual Design Editor(VDE) * VDE 允许分配和取消分配主题,编辑主题 CSS 和 JS 文件,更改页面...

    深入学习Magento必读

    在Magento中,MVC架构起到了组织代码、分离职责、提高可维护性和可扩展性的作用。 **Model(模型)**:模型层是系统的核心,负责处理业务逻辑和数据操作。在Magento中,模型类通常继承自Mage_Core_Model_Abstract,...

    Magento1产品预览

    `package.xml`是Magento的配置文件,它定义了模块的结构和依赖关系。在这个场景下,`package.xml`可能会包含有关产品预览功能的模块信息,如模块名、版本、依赖项等。开发者在创建自定义模块来增强产品预览功能时,...

    Magento中文用户手册

    2. 模板语言:学习使用Magento的模板语言——PHTML和XML,来控制页面布局和内容展示。 3. CSS与JavaScript:通过修改CSS样式表和JavaScript文件,实现页面样式和交互效果的调整。 五、扩展与插件 1. Magento ...

    magento学习重点

    例如,`header` Block在`page.xml`布局文件中被定义,然后在页面模板文件(如`1column.phtml`)中通过`getChildHtml('header')`函数调用来显示。每个Block类型由特定的类实现,如`Mage_Page_Block_Html_Header`,...

    如何制作属于自己的Magento主题

    1. 结构区块:在Magento中,结构区块定义了页面的基本组成部分,如头部、主体、侧边栏和底部。开发者需要理解这些区块的作用和相互关系,以便在自定义主题时调整页面元素的位置和功能。例如,可以通过修改布局XML...

    magento模块组件或插件开发教程

    View层则包含了多种视图元素,如PHTML模板、Block类和布局XML。了解这些差异有助于你在实际开发中做出更合适的选择。 最后,我们将深入“magneto的高级资源模型”。在Magento中,资源模型是连接数据库的主要方式,...

    深入理解magento

    Magento是一款强大的开源电子商务平台,以其高度可定制性和灵活性著称。本教程旨在深入解析Magento的模块开发,帮助开发者更好地理解和掌握其核心概念和技术。 一、请求分发与控制器 在Magento中,请求分发是系统...

    magento创建自定义页面 (Bestseller实例) Bestseller products in Magento

    在这个例子中,文件`bestseller.phtml`应该被放置在`app/design/frontend/{Package}/{Theme}/template/bestseller`目录下,其中`{Package}`和`{Theme}`分别代表你的主题包和主题名称。这个`.phtml`文件将负责渲染...

    Magento Extension Developers Guide 1.0

    - **创建模板和布局结构**:根据需要创建模板文件(.phtml)和布局文件(.xml),并通过这些文件来控制页面的外观和行为。 **辅助文件**:除了主要的代码和配置文件外,还需要创建一些辅助文件来增强扩展的功能性,如...

    Magento: 后台添加预览按钮 View product in frontend from Magento admin

    Magento是一款强大的开源电子商务平台,以其高度可定制性和灵活性著称。在Magento的后台管理系统中,管理员可以进行商品的创建、编辑、管理等操作。然而,原生的Magento系统并未提供直接在后台预览商品前端展示效果...

    magento 购物车预览

    5. **package.xml**:这是一个配置文件,用于描述Magento扩展的结构和依赖关系。在Magento安装或升级过程中,`package.xml`指导系统如何处理扩展的代码、模板、皮肤和翻译文件。 购物车预览的实现涉及到前端和后端...

    magento模板

    7. **模板文件**:如app/design/frontend/{package}/{theme}/template目录中的PHTML文件,定义了页面的具体内容和逻辑。 8. **字体和图标**:如果模板使用了特殊的字体或图标集,它们可能位于skin目录下相应的子...

Global site tag (gtag.js) - Google Analytics