我在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!";
}
}
?>
Recommended.phtml
<h1>Recently viewed</h1>
<?php
$this->recommended();
?>
所以我使用推荐的()函数打印出点击后的产品数据。当我在主页上点击某些内容时,它会转到产品视图页面,我也可以在其中看到(在上半部分)产品的名称和ID以及&#34;测试!&#34;(这也在函数中得到了回应)。 我想要的是,因为我在主页(在phtml文件中)中调用了相同的函数recommended(),我应该看到产品ID,名称以及&#34;测试!&#34 ;。问题是它只显示&#34;测试!&#34;。 我做错了吗?
答案 0 :(得分:0)
我建议你使用cookies。用户点击产品后,将其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);
;
我希望这会给你一个想法。
答案 1 :(得分:0)
请按照以下步骤在主页上点击/查看:
1-点击CMS-&gt;小部件
2-单击“添加新窗口小部件实例”
3-选择类型 - &gt;最近浏览过的产品
4-选择设计包主题 - &gt;您的主题
5-单击继续按钮
6-前端属性
一个。提供小组件实例标题
湾分配到商店视图 - &gt;所有商店视图
℃。向下滚动,您会注意到“布局更新”部分
我。单击“添加布局更新”
II。显示开 - &gt;指定页面(您也可以选择任何其他选项)
Page-&gt;(选择您想要的页面)
阻止参考 - &gt;(选择您的参考以显示它)
7-在窗口小部件选项中
一个。设置'要显示的产品数'
8-单击“保存”按钮并检查指定的页面。如果您没有看到任何内容,请不要忘记清除缓存。