0

我创建了一个自定义模块,我想在其中显示有关产品的一些信息。在 config.xml 我添加

<blocks>
    <mymodule>
        <class>Namespace_MyModule_Block</class>
    </mymodule>
</blocks>

块类扩展了 Mage_Catalog_Block_Product_View。但我不能打电话

$this->getProduct()

根据模块 (mymodule.phtml) 在 *.phtml 文件中。xmls 配置得很好,所以我可以调用 .phtml

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

但 $product 始终为空。根据模块 config.xml 中的配置 $this->getProduct() 应该访问 Mynamespace_MyModule_Block_View 并调用该函数。我尝试了一个只返回一个字符串值的虚拟函数,但这也不起作用。

我希望有人可以给我一个提示天气有一些缺失或错误的配置。

编辑 1:layout.xml 的内容

<?xml version="1.0"?>
<layout>
    <catalog_product_view>
        <reference name="product.info">
            <block type="core/template" name="product_available_price" as="product_available_price"
                   template="productavailable/price.phtml"/>
            <block type="core/template" name="product_available_info" as="product_available_info"
                   template="productavailable/info.phtml"/>
            <block type="core/template" name="product_available_button" as="product_available_button"
                   template="productavailable/button.phtml"/>
        </reference>
    </catalog_product_view>
</layout>

在 button.phtml 我调用 $this->getProduct() 并且方法在 Mynamespace_MyModule_Block_Button

4

2 回答 2

3

在我使用的一个自定义模块中,如下所示

Yournamespace_Brand_Block_View 类扩展了 Mage_Catalog_Block_Product_Abstract

而且我还使用了具有magento默认功能的所有产品功能,例如

分页和工具栏等

编辑

块类型从 更改 core/templateproductavailable/button

 <block type="productavailable/button" name="product_available_button" as="product_available_button"                       template="productavailable/button.phtml"/>

希望这一定能解决您的问题。

让我知道我是否可以为您提供更多帮助。

于 2013-09-24T12:16:41.327 回答
2

也许我不明白你的问题,但如果我是正确的,你试图调用$this->getProduct()which 是你自定义 Block 中的一个函数Mynamespace_ProductAvailable_Block_Button。如果我查看您的 xml,则您的块未链接到 phtml:

 <block type="core/template" name="product_available_button" as="product_available_button"
               template="productavailable/button.phtml"/>

这应该是:

 <block type="productavailable/button" name="product_available_button" as="product_available_button"
                   template="productavailable/button.phtml"/>

“类型”属性将块链接到 phtml,所以你错过了这个。现在您正在使用没有getProduct()方法的核心模板类

于 2013-09-24T12:51:41.567 回答