我在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以及“Test!”(该功能中也反映了这一点)。我想要的是,由于我也是在主页(在phtml文件中)中推荐的()函数中调用的,所以我应该看到产品id、名称和"Test!“。问题是,它只是显示“测试!”。我是不是做错了什么事?
发布于 2017-05-18 11:28:50
我建议你用饼干。一旦一个人点击了某个产品,就把他们的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);
; 我希望这能给你一个主意。
发布于 2017-05-19 06:24:50
请按照以下步骤在主页上单击/查看最近的内容:
点击CMS->小部件
2-点击‘添加新小部件实例’
3-选择类型->最近查看的产品
4-选择设计包主题->主题
5-点击继续按钮
6-在前端属性
给Widget实例标题
指定存储视图->所有存储视图
c.向下滚动一点,你会注意到“布局更新”部分。
单击“添加布局更新”
二、在->指定的页面上显示(您也可以选择任何其他选项)
7-在Widget选项中
设置“要展示的产品数量”。
点击“保存”按钮,检查你指定的页面。如果你什么都没看到,别忘了清除缓存。
https://stackoverflow.com/questions/44020098
复制相似问题