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( )进行定义。

【无人机】基于改进粒子群算法的无人机路径规划研究[遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值