繁体   English   中英

在Magento中添加到local.xml时不显示自定义块

[英]Custom block not displayed when added to local.xml in Magento

我有一个自定义模块(带标签的产品信息),我想在产品视图模块本身内的商店产品视图中显示该模块。 我在view.phtml中正确调用了该块,并使用以下代码将其添加到XML中:

<block type="catalog/product_view_tabs" name="product.info.tabs" as="info_tabs" template="catalog/product/view/tabs.phtml" >

该块在放入catalog.xml中时呈现,但是每当我以以下形式将其放入local.xml中时

<catalog_product_view translate="label">
 <label>Catalog Product View (Any)</label>
   <reference name="content">
    <block type="catalog/product_view_tabs" name="product.info.tabs" as="info_tabs" template="catalog/product/view/tabs.phtml" >
   </reference>
</catalog_product_view>

这是行不通的。 当我在local.xml中的代码片段中添加before或after标记(例如after =“ product.info.media”)时,它将呈现但不在内部,但始终在整个product view块之前或之后。 在catalog.xml中,我将其放置在其他块之间,并且运行良好。

当我将整个产品视图部分的内容从catalog.xml复制到local.xml时,它可以工作,但是所有内容(图像,说明等)显示两次。

有什么办法可以通过local.xml做到这一点? 也许通过setchild?

当您谈论local.xml时,您是在谈论/app/etc/local.xml吗? 此文件是配置文件,而不是布局更新文件。 它不打算那样工作。

如果您正在谈论另一个布局文件(在app / design / <package> / <theme> /layout/local.xml中),则必须将声明此布局更新文件的模块的依赖项添加到声明原始内容的模块中页面(在您的情况下为Mage_Catalog)。

之所以这样,是因为Magento属性之后之前的属性仅与已经声明的块进行比较,而且我认为您的local.xml在原始catalog.xml之前进行了解析。

假设您有一个名为StackOverflow_Local的模块,在其config.xml(app / code / local / StackOverflow / Local / etc / config.xml)中具有以下声明:

<config>
  <frontend>
    <layout>
      <updates>
        <stackoverflow_local>
          <file>local.xml</file>
        </stackoverflow_local>
      </updates>
    </layout>
  </frontend>
</config>  

然后,您应该在app / etc / modules / StackOverflow_Local.xml中声明您的模块,在其中应找到类似以下内容的内容:

<?xml version="1.0"?>
<config>
  <modules>
    <StackOverflow_Local>
      <active>true</active>
      <codePool>local</codePool>
    </StackOverflow_Local>
  </modules>
</config>

要添加依赖项(如果禁用/删除了Mage_Catalog,则您的模块将不起作用),将您的激活XML转换为:

<?xml version="1.0"?>
<config>
  <modules>
    <StackOverflow_Local>
      <active>true</active>
      <codePool>local</codePool>
      <depends>
        <Mage_Catalog />
      </depends>
    </StackOverflow_Local>
  </modules>
</config>

您正在将块添加到内容块。 将您的reference 名称值更新为product.info 根据您的别名info_tabs ,只要您的模板具有

echo $this->getChildHtml('info_tabs')

你应该很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM