2012-10-26 42 views
0

我是新的magento我在調用自定義佈局中的view.phtml文件時出現問題。在自定義佈局中調用view.phtml模板

Folowing是我的代碼,這是我包括在cutom佈局文件,但我得到致命錯誤
Fatal error: Call to a member function getMetaTitle() on a non-object in D:\wamp\www\projects\magento\app\code\core\Mage\Catalog\Block\Product\View.php on line 56

<?php echo $this->getLayout()->createBlock('catalog/product_view')->setTemplate('catalog/product/view.phtml')->toHtml(); ?> 

請回復我這個問題。

在此先感謝。

+0

$ this-> getLayout()之前的位置?順便說一句,你應該使用loayout xml文件,而不是強制創建這樣的塊 –

+0

嗨Bixi, 感謝您的回覆。 你能爲我提供這個步驟嗎?我該如何構建這個步驟?這對我非常有幫助。 感謝您的回覆....再次 – pratik

+0

好的,謝謝,我會看到這一點。 – pratik

回答

0

你不應該像那樣實例化一個Block。

看看標準產品頁面,瞭解它是如何工作的:

你有一個控制器命名的目錄/產品/視圖至極在Mage_Catalog_ProductController類中定義

該控制器連接到一個佈局更新在app/design/package/theme/layout/catalog.xml中的catalog.xml文件中定義的句柄

在這個佈局文件中,您會看到塊目錄/ product_view是由幾個子項聲明的:

<catalog_product_view translate="label"> 
    [...] 
    <reference name="content"> 
     <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml"> 
      <block type="catalog/product_view_media" name="product.info.media" as="media" template="catalog/product/view/media.phtml"/> 
      <block type="core/text_list" name="alert.urls" as="alert_urls" translate="label"> 
       <label>Alert Urls</label> 
      </block> 
      [...] 

這是通過手動實例化它缺少的部分。

你必須適應/瞭解catalog.xml中的佈局爲您的需求

好運

2

當你創建一個塊文件D:\wamp\www\projects\magento\app\code\core\Mage\Catalog\Block\Product\View.php中出現在這條線

$product = $this->getProduct(); 
$title = $product->getMetaTitle(); 

你的錯誤您不指定爲其創建塊的產品,並且這是一個重要且必需的參數。

函數來獲取產品:

public function getProduct() 
{ 
     if (!Mage::registry('product') && $this->getProductId()) 
     { 
      $product = Mage::getModel('catalog/product')->load($this->getProductId()); 
      Mage::register('product', $product); 
     } 
     return Mage::registry('product'); 
} 

你真的有一個選項,如何解決這個問題,但它是不是很漂亮,但工作。

<?php 
    Mage::register('product',Mage::getModel('catalog/product')->load(YOUR_PRODUCT_ID)); 
    echo $this->getLayout()->createBlock('catalog/product_view')->setTemplate('catalog/product/view.phtml')->toHtml(); 
    Mage::unregister('product'); 
?> 

這一決定不能產品頁面上使用。

+0

嗨Dzmitry, 感謝您的回覆...... It'w工作正常,但沒有得到像view.phtml一樣的完整視圖有些缺少像產品價格,添加到購物車功能,產品圖像。你能告訴我怎麼去做那個嗎? 再次感謝! – pratik