我想打个电话 $this->getChildHtml('product_type_data') 以获得产品的价格外视图。phtml模板文件。

目前我有 echo $this->getChildHtml('product_type_data') 输出目录/产品/视图/类型/默认值的内容。phtml'。

我需要将其移动到自定义模块(缓存打孔)中的文件中,以便单独调用它。所以在这个文件中我做了:

$block = Mage::app()->getLayout()->createBlock('customerprices/catalog_product_view', $this->getId());
$block->setTemplate('catalog/product/view/type/default.phtml');
$block->setIsLoggedIn(Mage::getSingleton('customer/session')->isLoggedIn());
$out = $block->getChildHtml('product_type_data');

但在这种情况下$out包含一个空字符串。我是否需要在这个块上设置一些东西,以便它会返回价格html?如果是这样,如何?如果需要,我有一个当前的$_product对象。

我将不胜感激任何建议。


使用Mage::getBlockSingleton(。..)

当我使用此代码时:

$thatx = Mage::getBlockSingleton('catalog/product_view');   
$cnamex = get_class($thatx);
echo 'cname: '.$cnamex;

$cnamex不包含类名(空字符串/变量)。我认为我无法在其上运行任何方法。

有帮助吗?

解决方案

如果您只需要呈现产品价格块,则可以像这样使用:

$out=Mage::getBlockSingleton('catalog/product_view')->getPriceHtml($_product);

getPriceHtml() 的方法 Mage_Catalog_Block_Product_Abstract 哪个是 Mage_Catalog_Block_Product_View

第二条路

扩展你的街区 customerprices/catalog_product_viewMage_Catalog_Block_Product_Abstract 并使用它:

class MyCompany_Customerprices_Catalog_Product_View extends Mage_Catalog_Block_Product_Abstract{

}

$block = Mage::app()->getLayout()->createBlock('customerprices/catalog_product_view', $this->getId());
$out=$block->getPriceHtml($_product);
许可以下: CC-BY-SA归因
scroll top