2011-08-25 147 views
0
到页脚

我在/app/design/frontend/mytemplate/default/template/page/html/footer.cat.links.phtml添加布局块在Magento

创建一个.phtml文件,这在时刻仅包含1个html div,其中包含一些文本。

我想把这个添加到页脚,但我没有玩过布局xml。

所以,我打开了/app/design/frontend/mytemplate/default/layout/page.xml,并尝试添加:

<block type="catalog/navigation" name="footer.cat.links" as="footerCatLinks" template="page/html/footer.cat.links.phtml" />

(类型为 “目录/导航” 因为我打算要得到这个工作:http://www.magentocommerce.com/wiki/4_-_themes_and_template_customization/catalog/getting_and_using_categories_and_subcategories

我把它只是页脚块像这里面:

<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml"><my block here></block>

然后在footer.phtml,我试图调用新的块用:

<?php $this->getChildHtml('footerCatLinks') ?>

我刷新缓存等,但它不能在footer.cat.links添加HTML DIV。 phtml当我在浏览器中查看。

我终于认为我是在Magento附近摸索了一下,但是从我对文档的理解中,这应该起作用!我有多不对?

+0

page.xml中围绕您的块标记的布局处理是什么? –

回答

6

在Magento的布局xml中,块“type”属性指示系统应该尝试加载哪种类型的块,因此指定type="catalog/navigation"指示Magento它需要加载Mage_Catalog_Block_Navigation。

除非您编写了自己的块类 - 在这种情况下完全没有必要 - 您应该使用core/template类型的块代替。然后,您可以直接在.phtml文件中利用类别模型(Mage::getModel('catalog/category');)来加载您的类别列表。

我一般喜欢用两种name=""as=""相同的值,所以你的块添加到页脚我会用<default>布局部分中的以下XML中的所有网页:

<reference name="footer"> 
    <block type="core/template" template="page/html/footer.cat.links.phtml" name="footer_cat_links" as="footer_cat_links" /> 
</reference> 

确保刷新布局xml缓存(如果启用了缓存)(系统>缓存管理)。

请注意,您不需要呼叫$this->getChildHtml('footer_cat_links');,因为页脚块应该已经包含$this->getChildHtml();,它将迭代分配给页脚块的所有子项目。