2011-01-07 73 views
1

我有一個客戶產品頁面,它的字面意思是生活在catalog/product/view.phtml頁面旁邊。除了一些小例外,它與該頁面基本相同。這基本上是一個類型的頁面「的日子產品」,所以我不能與常規產品頁面結合起來,因爲我有來從數據庫中的數據並進行負載獲得的產品信息幫助Magento及相關產品

$_product = Mage::getModel('catalog/product')->load($row['productid']); 

要長話短說,一切正常(包括所有兒童的html塊)與相關產品的單一例外。

負載之後,我的產品保存到註冊表中與

Mage::register('product', $_product); 

,然後嘗試與加載相關產品:

echo $this->getLayout()->createBlock('catalog/product_view')->setTemplate('catalog/product/list/related.phtml')->toHtml();` 

所有這一切都還給錯誤:

Fatal error: Call to a member function getSize() on a non-object in catalog/product/list/related.phtml on line 29`, 

和第29行是

<?php if($this->getItems()->getSize()): ?>`. 

任何幫助獲取相關負載將是appreicated。

+0

只是一個很快的FYI。如果您將一行縮進四個字符,您將獲得代碼格式,並且這是在這些部分周圍發佈代碼示例的首選方式。這就是編輯的原因。 – 2011-01-07 06:42:13

+0

我試過了,但沒有奏效。這就是我累了的時候得到的。 – Anthony 2011-01-07 13:36:39

回答

5

我並沒有完全遵循你想要做的事情,但我知道你爲什麼會得到你的錯誤。你要創建一個塊,其類的別名/類是

catalog/product_view 
Mage_Catalog_Block_Product_View 

但你設置爲

catalog/product/list/related.phtml 

股票catalog/product/list/related.phtml模板的建立是爲了用catalog/product_list_related使用該塊的模板只有,而不是catalog/product_view區塊。

如果您看看catalog/product_list_related塊(它是Mage_Catalog_Block_Product_List_Related)的類定義,您可以看到有一個getItems()方法。

public function getItems() 
{ 
    return $this->_itemCollection; 
} 

它返回一個集合。收集在_prepareData方法

protected function _prepareData() 
{ 
    $product = Mage::registry('product'); 
    /* @var $product Mage_Catalog_Model_Product */ 

    $this->_itemCollection = $product->getRelatedProductCollection() 
    ... 

此集合從未有catalog/product_view座,這就是爲什麼你得到你的錯誤設置。

在上面的代碼中,如果切換到創建catalog/product_list_related塊,您的錯誤應該消失。

0
public function relatedproductsAction(){ 

    $this->loadLayout(); 
    $relatedBlock = ""; 

    $rec_prod_id = Mage::getSingleton('checkout/session')->getLastAddedProductId(true); 
    $_product = Mage::getModel('catalog/product')->load($rec_prod_id); 
    Mage::register('product', $_product); 


    $relatedBlock = $this->getLayout()->createBlock('catalog/product_list_related')->setTemplate('catalog/product/related.phtml')->toHtml(); 

    echo $relatedBlock; 
    exit; 

} 

通過ajax調用獲得相關塊的html,當產品被添加到購物車後。可能相對有幫助。

相關問題