2016-02-02 66 views
1

我在產品頁面view.phtml內部創建了一個自定義塊。該塊已成功創建,因爲我可以在打開路徑提示時看到該塊。起初,我只是用一些普通的HTML內容的模板類​​似下面:magento phtml內容不顯示在產品頁面view.phtml

<div> 
this is the new block 
</div> 

但如果我更改模板PHTML內容,它返回我打電話非目標函數的消息。象下面這樣:

TEMPLATE

<?php $_helper = $this->helper('catalog/output'); ?> 
<?php $_product = $this->getProduct(); ?> 
<?php $productName = $_helper->productAttribute($_product, $_product->getName(), 'name'); ?> 
<?php $productUrl = $_helper->productAttribute($_product, $_product->getProductUrl(), 'product_url'); ?> 
<?php $productImage = $_product->getImageUrl() ?> 

<div class="socialShare clearfix"> 
    <ul> 
     <li><a class="fa fa-facebook" href="javascript:popWin('https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($productUrl); ?>&t=<?php echo urlencode($productName); ?>', 'facebook', 'width=640,height=480,left=0,top=0,location=no,status=yes,scrollbars=yes,resizable=yes');" title="<?php echo $this->__('Share it') ?>"></a></li> 
    </ul> 
</div> 

ERROR MESSAGE

Fatal error: Call to a member function getName() on a non-object in /home/onebig/public_html/app/design/frontend/ma_hitstore/default/template/catalog/product/view/socialShare.phtml on line 3

的catalog.xml我有以下代碼

<catalog_product_view translate="label"> 
    <reference name="content"> 
     <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml"> 
      <block type="core/template" name="product.info.socialShare" template="catalog/product/view/socialShare.phtml"/> 
    </reference> 
</catalog_product_view> 

view.phtml調用塊

<?php echo $this->getChildHtml('product.info.socialShare'); ?> 

我測試如果我在view.phtml模板內容直接粘貼和它的作品。我猜如果我創建一個自定義塊,我必須重新定義所有這些php變量$productName,$productUrl,$productImage某處?對不起,我是這個新手。非常感謝您的知識。

回答

1

此問題是您的子區塊的類型爲core/template。當你在覈心模板上調用getProduct時,它只會返回null。

如果您更新到catalog/product_view那麼$this->getProduct()將返回產品。


或者,您也可以通過從註冊表中讀取它從任何模板當前產品:

$_product = Mage::registry('current_product'); 
+0

@DylanDaicySiao對不起,我不明白的問題。 '$ this-> getProduct()'不應該返回一個塊。它應該返回一個產品模型。 –

+0

謝謝。我可以用type =「catalog/product_view」 –

+0

做到這一點對不起,我對這一切真的很陌生,但我從你那裏學到了!我也嘗試從註冊表中獲取,它也起作用。 –

相關問題