Pergunta

Eu gostaria de ligar $this->getChildHtml('product_type_data') para obter o preço do produto fora do arquivo de modelo view.phtml.

Atualmente eu tenho echo $this->getChildHtml('product_type_data') e isso gera o conteúdo de 'catalog/product/view/type/default.phtml'.

Preciso movê-lo para um arquivo em um módulo personalizado (perfurador de cache) para que ele seja chamado separadamente.Então neste arquivo eu fiz:

$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');

Mas neste caso $out contém uma string vazia.Preciso definir algo neste bloco para que ele retorne o preço html?Se sim, como?Eu tenho um objeto $_product atual, se necessário.

Eu apreciaria qualquer sugestão.


Usando Mage::getBlockSingleton(...)

quando eu uso este código:

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

$cnamex não contém nome de classe (string/variável vazia).Conseqüentemente, não consigo executar nenhum método nele.

Foi útil?

Solução

Se você precisar que apenas o bloco de preço do produto seja renderizado, você pode usar assim:

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

Ver getPriceHtml() método de Mage_Catalog_Block_Product_Abstract que é a classe pai de Mage_Catalog_Block_Product_View

Segunda via

Estenda seu bloco customerprices/catalog_product_view de Mage_Catalog_Block_Product_Abstract e use-o:

class MyCompany_Customerprices_Catalog_Product_View extends Mage_Catalog_Block_Product_Abstract{

}

e

$block = Mage::app()->getLayout()->createBlock('customerprices/catalog_product_view', $this->getId());
$out=$block->getPriceHtml($_product);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top