magento入门代码解析

很多开发者对magento的页面显示和执行方式很模糊,没有一个整体的概念,现在这里就大概的总结一下。

一、模板

magento的模板(template)比较复杂,需要.phtml文件、.xml文件、样式文件这三种文件才能实现一个完整的模板。

二、程序是怎么实现页面的呢?

当安装了默认的magento后, Home page 的Layout 默认为2columns-right,如图一所示。

1、设计路径

默认的页面设计路径是magento\app\design\frontend\default;

当页面Layout选择”1 column”的时候,那么对应的文件是magento\app\design\frontend\base\default\template\page\1column.phtml;

当页面Layout选择”2columns-right”(2 columns with right bar )的时候,那么对应的文件是magento\app\design\frontend\base\default\template\page\2columns-right.phtml;

注意:base旧版本是default;

其它类此;

2、php的函数调用

我们看下2columns-right.phtml这个文件的内容,找到其中一个php的函数调用$this->getChildHtml(‘header’);

这个函数就是magento为了获得header的方法,这个header从哪里去获得呢?

打开magento\app\design\frontend\base\default\layout\page.xml文件,可以找到如下的代码:

<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>

这里是header区块的结构,magento以block(区块)来布局页面的,一个block就是一个逻辑输出。

这个header结构调用了三个block,分别是topLinks,store_language,topMenu。

这些block从哪得到呢?

属性type=”page/html_header”,指明要从magento\app\code\core\Mage\Page\Block\Html的Mage_Page_Block_Html_Header对象里获得,代码在Header.php文件中。

以此类推,topLinks是从magento\app\code\core\Mage\Page\Block\Template的Mage_Page_Block_Template_Links对象获得,代码在Links.php文件中;

topMenu是从magento\app\code\core\Mage\Core\Block\Text中的Mage_Core_Block_Text_List对象获得,代码在List.php文件中。

3、页面视图

在Header.php文件可以看到如下代码:

class Mage_Page_Block_Html_Header extends Mage_Core_Block_Template
{
public function _construct()
{
$this->setTemplate('page/html/header.phtml');
}
...
}

在这个Block对象里,可以发现初始化的时候有一行 $this->setTemplate(‘page/html/header.phtml’)的代码;其它Block对象里都有类似于这样的初始化代码。

例如遇到$this->setTemplate(‘page/template/links.phtml’)这样的代码,到相应的magento\app\design\frontend\default\default\template\目录下,可以找到对应的html模板,可以修改对应的页面视图。

未经允许不得转载:哈勃私语 » magento入门代码解析

本文共1854个字 创建时间:2018年5月17日14:56   

分享到:更多 ()