有关Magento和相关产品的帮助

有关Magento和相关产品的帮助,magento,Magento,我有一个客户产品页面,它位于catalog/product/view.phtml页面旁边。除了一些小的例外,它基本上与那个页面相同。它基本上是一个“当日产品”类型的页面,因此我不能将其与常规产品页面结合,因为我必须从数据库中获取数据并执行加载以获取产品信息 $_product = Mage::getModel('catalog/product')->load($row['productid']); 长话短说,除了相关产品之外,一切都正常(包括所有子html块) 加载后,我将产品保存到注册

我有一个客户产品页面,它位于catalog/product/view.phtml页面旁边。除了一些小的例外,它基本上与那个页面相同。它基本上是一个“当日产品”类型的页面,因此我不能将其与常规产品页面结合,因为我必须从数据库中获取数据并执行加载以获取产品信息

$_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()): ?>`.
`。

任何帮助加载相关文件的信息都将被告知。

我没有完全理解您的意图,但我知道您为什么会出现错误。您正在创建其类别名/类为的块

catalog/product_view
Mage_Catalog_Block_Product_View
但您将此块的模板设置为

 catalog/product/list/related.phtml
库存
catalog/product/list/related.phtml
模板构建为仅与
catalog/product\u list\u related
一起使用,而不是与
catalog/product\u视图
块一起使用

如果查看与
catalog/product\u list\u相关的
块(这是与
Mage\u catalog\u Block\u product\u list\u相关的
)的类定义,可以看到有一个
getItems()
方法

public function getItems()
{
    return $this->_itemCollection;
}
返回一个集合。集合是在
\u prepareData
方法中设置的

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

    $this->_itemCollection = $product->getRelatedProductCollection()
    ...
此集合从不使用
目录/产品\u视图
块进行设置,这就是为什么会出现错误


在上面的代码中,如果切换到创建与目录/产品列表相关的块,则错误应该消失

我不太明白你想做什么,但我知道你为什么会犯错误。您正在创建其类别名/类为的块

catalog/product_view
Mage_Catalog_Block_Product_View
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;

}
但您将此块的模板设置为

 catalog/product/list/related.phtml
库存
catalog/product/list/related.phtml
模板构建为仅与
catalog/product\u list\u related
一起使用,而不是与
catalog/product\u视图
块一起使用

如果查看与
catalog/product\u list\u相关的
块(这是与
Mage\u catalog\u Block\u product\u list\u相关的
)的类定义,可以看到有一个
getItems()
方法

public function getItems()
{
    return $this->_itemCollection;
}
返回一个集合。集合是在
\u prepareData
方法中设置的

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

    $this->_itemCollection = $product->getRelatedProductCollection()
    ...
此集合从不使用
目录/产品\u视图
块进行设置,这就是为什么会出现错误

在上面的代码中,如果切换到创建与目录/产品列表相关的块,则错误应该消失

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。可能会相对有帮助


在将产品添加到购物车之后,通过ajax调用获取相关块的html。可能会相对有帮助。

仅供参考。如果您将一行缩进四个字符,您将获得代码格式,这是在这些部分发布代码示例的首选方式。这就是编辑的原因。我试过了,但没用。这就是我在累的时候做这件事的收获。仅供参考。如果您将一行缩进四个字符,您将获得代码格式,这是在这些部分发布代码示例的首选方式。这就是编辑的原因。我试过了,但没用。这就是我累的时候做这件事得到的。