我正在制作自定义的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等。
谢谢,
伊恩
答案 0 :(得分:15)
这是正在发生的事情的简化版本,但会 希望足以让你前进。
Magento认为有三种类型的物体是“特殊的”。这些是模型,块和助手。 Magento不使用这些对象的类名,而是使用名为 class aliases 的类似URI的字符串。所以这个
page/html
对应于Block类
Mage_Page_Block_Html
这里的类指的是PHP类,而不是CSS类。
布局对象负责为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>