在模板文件外部的新块上调用$this->getChildHtml
-
12-12-2019 - |
题
我想打个电话 $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_view
从 Mage_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);