Magento主题中左栏的块类型是什么?

时间:2010-11-26 17:02:19

标签: magento

我正在制作自定义的Magento(1.3)主题,我想添加左栏。

我用html in。创建了template / page / html / left.phtml。

在2columns-left.phtml中,我添加了以下内容:

<?php echo $this->getChildHtml('left'); ?>

在page.xml中,我添加了以下内容:

<block type="page/html" name="left" as="left" template="page/html/left.phtml" />

我不太了解的是块类型应该是什么 - 如果我执行page / html,core / template或page / html_header似乎有效 - 这是什么以及这个案例的正确值是什么,我只想有效地包含一个phtml文件 - page / html / left.phtml等。

谢谢,

伊恩

3 个答案:

答案 0 :(得分:15)

这是正在发生的事情的简化版本,但会 希望足以让你前进。

特殊对象

Magento认为有三种类型的物体是“特殊的”。这些是模型,块和助手。 Magento不使用这些对象的类名,而是使用名为 class aliases 的类似URI的字符串。所以这个

page/html

对应于Block类

Mage_Page_Block_Html

这里的类指的是PHP类,而不是CSS类。

Magento页面渲染

布局对象负责为Magento页面创建所有HTML。

布局对象是嵌套的块对象的集合。

大多数块对象都是模板块,也就是说,Block类继承自Magento基础模块块Mage_Core_Block_Template。模板块是负责呈现phtml模板文件的对象。

因此,当您在XML布局文件中指定“类型”时,您告诉Magento。

  

我想使用模板baz.phtml

添加类foo / bar的块对象

在代码中,那是

<!-- "name" and "as" are used to identify the block in the layout, so that 
PHP code can get a reference to the object. -->
<block type="foo/bar" name="myname" as="myname" template="path/to/baz.phtml" />

如果您只想渲染模板文件,可以使用

type="core/template"

但是,使用不同的值,例如

type="page/html"

您的phtml模板文件可以访问

中的所有方法
Mage_Page_Block_Html

这意味着您可以执行类似

的操作
File: template.phtml

<a href="<?php echo $this->getBaseUrl();?>"></a>

core/template类没有getBaseUrl方法,但page/html类有。{1}}类。

如果你正在进行自定义模块开发(而不仅仅是主题),我通常会在自己的模块中创建一个块对象,它扩展了一个基本的Magento块。这允许我在我认为合适时将自己的方法添加到块中。如果您只是主题,page/html是一个不错的默认值。

答案 1 :(得分:0)

此案例的最佳类型是core/text_list,因为它会连接每个子HTML。

对于测试,您可以在布局XML中使用此示例:

<block type="core/text_list" name="left" as="left">
  <block type="core/text" name="test">
    <action method="setText"><text>Hello World</text></action>
  </block>
</block>

答案 2 :(得分:0)

magento主题中左栏的块类型

<block type="core/text_list" name="left" as="left" translate="label">
    <label>Left Column</label>
</block>