我在尝试设置会话变量,因此每个会话仅出现一次弹出框。在打开缓存的情况下在Magento中设置会话变量
为此,我创建了一个模块,当有人关闭弹出窗口时,通过AJAX调用该模块。模块的控制器设置会话变量。控制器看起来像这样:
class Company_Popup_IndexController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
Mage::getSingleton('core/session')->setNewsletterPopup('yes');
}
}
超级简单。
然后,在块I检查会话变量被设置(或者如果用户已登录):
class Company_Popup_Block_Popup extends Mage_Core_Block_Template
{
public function displayPopup(){
if(!$this->helper('customer')->isLoggedIn() && Mage::getSingleton('core/session')->getNewsletterPopup() == null){
return true;
}
else{
return false;
}
}
public function getSessionData(){
return Mage::getSingleton('core/session');
}
}
模板文件然后调用displayPopup方法,要么显示通讯弹出或不。
这一切都很完美......直到我打开缓存时,会话变量没有被设置,或者至少在块/模板文件中无法访问。
我在这里错过了什么?
你在哪里渲染你的区块,例如它是在footer.phtml? – Theodores
您正在运行CE还是EE版? –
它可能会更简单,如果你只是使用javascript和饼干女巫没有缓存。你只能为当前会话设置一个cookie ... –