Magento 自定义 block 会匿名加载,但在布局文件中声明时不会加载

标签 magento layout customization block anonymous

我就是不明白...这会输出正确的 html:

file: /design/default/template/catalog/product/view.phtml

<?php 

    echo $this->getLayout()
        ->createBlock('core/template')
        ->setTemplate('catalog/product/view/teasers.phtml')
        ->toHtml(); 

?>

但是如果我在 local.xml 中声明该 block 并使用 getChildHtml(),则它不起作用:

file: /design/default/layout/local.xml

<catalog_product_view translate="label">
    <reference name="content">
        <block  
            template="catalog/product/view/teasers.phtml"
            type="core/template"
            name="teasers" 
            as="teasers" 
        ></block>
    </reference>
</catalog_product_view>

file: /design/default/template/catalog/product/view.phtml

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

我还需要其他东西吗?

最佳答案

对于经验丰富的 Magento 开发人员来说,这个问题不太有意义。希望解释为什么它没有意义可以帮助您找到问题的解决方案。

首先,您的 local.xml 路径不正确

/design/default/layout/local.xml

Magento 的结构如下

app/design/frontend/package-name/theme-name/layout/local.xml

您的路径中缺少包和/或主题名称。这使得在这里给你提供建议很困难——你确定 Magento 能看到你的 local.xml 文件吗? (使其无效 XML 并重新加载以查找错误是测试此问题的快速方法)

其次,您说过您正在使用 getChildHtml 来呈现该 block ,但同时您将其添加到 content block 中。 content block 是一个 test/list block ,它将自动渲染添加到其中的任何 block 。 content block 没有 phtml 模板,因此您无法调用 getChildHtml。您从哪里调用 getChildHtml

关于Magento 自定义 block 会匿名加载,但在布局文件中声明时不会加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17239785/

相关文章:

html - 如何 (y) 将 div 对齐到上一行底部的上方?

android - 旧的Android加载到新的eclipse中

iphone - UISlider 自定义缩略图

view - 如何在android studio中向调色板添加自定义 View ?

magento - 添加产品 View 附属标签 Magento Enterprise v1.12

magento 强制在时间之前执行 cron 作业

java - Android:如何获取翻转器内布局的ID?

android - 为什么自定义油煎面包 block 样式显示为灰色而不是它们指定的颜色?

magento - 在 AWS Elastic Beanstalk 上部署后运行 PHP 脚本

regex - 将 domain.tld/index.php 重定向到 domain.tld(删除 index.php,然后删除 301)