【问题标题】:Display recently clicked/viewed product data on homepage Magento在 Magento 主页上显示最近点击/查看的产品数据
【发布时间】:2017-05-17 08:56:55
【问题描述】:

我的 Magento 主页中有两个自定义块。其中一个块显示所有产品。另一个块应该显示最近点击/查看的产品。 我已经为事件创建了观察者来获取点击的产品数据。 如何使用来自观察者的这些数据在主页的第二个块中显示该产品的数据?我必须以某种方式从观察者那里传递数据。

Observer.php

<?php
include 'C:\wamp64\www\magento1924\app\code\local\Company\Namespace\Block\Recommended.php';

class Company_Namespace_Model_Observer {

public function getProductData($observer) {
    //Uncomment the line below to log what is contained here:
    //Mage::log($observer);

    $data = new Company_Namespace_Block_Recommended();
    $product = $observer->getProduct();
    $pId = $product->getId();
    $pName = $product->getName();


    //Mage::log($pId);
    Mage::log($pName);
    $data->recommended($pId, $pName);

}
}
?>

块文件Recommended.php

<?php
class Company_Namespace_Block_Recommended extends Mage_Core_Block_Template 
{    
public function recommended($pId, $pName){
    echo $pId;
    echo $pName;
    echo "Test!";
}
}
?>

推荐.phtml

<h1>Recently viewed</h1>
<?php
    $this->recommended();
?>

所以我使用这个函数推荐()来打印出点击产品的数据。当我在主页中单击某些内容时,它会将我带到产品视图页面,在该页面中我还可以看到(在上部)产品的名称和 ID 以及“测试!”(这也在功能)。 我想要的是,因为我也在主页(在 phtml 文件中)调用了相同的函数推荐(),所以我应该看到产品 ID、名称以及“测试!”。问题是它只显示“测试!”。 我做错了什么吗?

【问题讨论】:

标签: php magento


【解决方案1】:

我会建议您使用 cookie。用户点击产品后,将其 ID 保存在 cookie 中。在块类中读取 cookie 值并像这样抓取产品集合:

$productIds = array('384','385','385'); // Dummy ids, fetch them from cookies

$products = Mage::getModel('catalog/product')
 ->getCollection()
 ->addAttributeToSelect('*') 
 ->addAttributeToFilter('status', 1)
 ->addAttributeToFilter('visibility', 4)
 ->addIdFilter($productIds);
 ; 

我希望这会给你一个想法。

【讨论】:

  • 我想使用 cookie 也可以。我也试过这个 Mage::register 选项,但没有奏效。所以最终我使用会话来存储值并在我的块类中访问它。不过谢谢你的回答。
【解决方案2】:

请按照以下步骤获取最近在主页上的点击/查看:

1- 点击 CMS->Widgets

2- 点击“添加新的小部件实例”

3- 选择类型->最近浏览的产品

4- 选择设计包主题->你的主题

5- 点击继续按钮

6- 在前端属性中

一个。给小部件实例标题

b.分配给商店视图->所有商店视图

c。向下滚动一点,您会注意到“布局更新”部分

我。点击添加布局更新

二。显示在 -> 指定页面(您也可以选择任何其他选项)

  1. 页面->(选择你想要的页面)

  2. 块参考->(选择您的参考以显示它)

7- 在小部件选项中

一个。设置“要显示的产品数量”

8- 单击“保存”按钮并检查您指定的页面。如果您没有看到任何内容,请不要忘记清除缓存。

【讨论】:

  • 我必须以编程方式完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多