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

Magento主题中左列的块类型是什么?,magento,Magento,我正在处理一个自定义的Magento(1.3)主题,我想添加一个左栏 我已经用中的html创建了模板/page/html/left.phtml 在2 columns-left.phtml中,我添加了以下内容: <?php echo $this->getChildHtml('left'); ?> <block type="page/html" name="left" as="left" template="page/html/left.phtml" /> 在p

我正在处理一个自定义的Magento(1.3)主题,我想添加一个左栏

我已经用中的html创建了模板/page/html/left.phtml

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

<?php echo $this->getChildHtml('left'); ?>
<block type="page/html" name="left" as="left" template="page/html/left.phtml" />

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

<?php echo $this->getChildHtml('left'); ?>
<block type="page/html" name="left" as="left" template="page/html/left.phtml" />

我不太明白的是,块类型应该是什么——如果我使用page/html、core/template或page/html_头,它似乎可以工作——这是为了什么?对于这种情况,正确的值是什么,我只想有效地包括一个phtml文件——page/html/left.phtml等等

谢谢


Ian

这种情况下最好的类型是
core/text\u 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>

你好,世界

这是正在发生的事情的简化版本,但将 希望足够让你走

特殊物品 Magento认为有三种类型的对象是“特殊的”。这些是模型、块和辅助对象。Magento没有为这些对象使用类名,而是使用类似URI的字符串,称为类别名。那么这个

page/html
对应于块类

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

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

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

大多数块对象都是模板块,也就是说,块类继承自基本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="page/html"
您的phtml模板文件可以访问中的所有方法

Mage_Page_Block_Html
这意味着你可以做一些像

File: template.phtml

<a href="<?php echo $this->getBaseUrl();?>"></a>
文件:template.phtml
core/template
类没有
getBaseUrl
方法,但是
page/html
类有


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

magento主题中左栏的块类型

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

左列

修复了代码格式。如果您在StackOverflow上用制表符或四个空格缩进代码,它将自动编码格式化/漂亮打印。@Alan-您还添加了一个分号,其中没有分号,也不需要分号:-PI将在默认HTML格式的代码上加一个分号;)酷,谢谢你的提示和修正。@ichilton-如果你有答案,请在可用答案中勾选最佳答案。谢谢-但如果我将其更改为核心/文本列表,它似乎消失了?谢谢你详细介绍你有什么建议最好在哪里阅读这类东西吗?根据你在那里说的,当你需要使用示例中的方法时,默认使用core/template并移动到page/html不是更好吗?99%的时间你将使用块创建html,因此访问这些方法不会有任何伤害,但这是一种风格/偏好/判断。默认为核心/模板没有问题。好的,谢谢。不过,访问这些方法会对性能造成影响吗?@Alan-从我的观点来看,为您的答案“脱帽致敬”。非常感谢您深入了解这些细节。我也回答了一些问题。