在Magento中切换不带GET参数的存储


switch store without GET Parameter in Magento

我想从一个商店到另一个商店进行不可见的重定向(我设置了多商店)到我的模块中,现在我使用这个片段,但它显示了GET参数:

echo '<p><a href="' . Mage::getUrl() . '?___store=' . $store . '">pick up this restaurant</a></p>'

我怎样才能做到这一点?

Thx

您必须为商店设置COOKIE

例如:

Mage::app()->setCurrentStore($storeViewId);
Mage::app()->getCookie()->set(Mage_Core_Model_Store::COOKIE_NAME, 'de', TRUE);
de = Store code.

也许您可以使用表单(方法post),并根据处理后的数据设置存储:Mage::app()->setCurrentStore(store_id)

使用POST表单意味着当使用后退按钮时,客户可能会在浏览器中遇到令人讨厌的"This page need be refresh"消息。另一种方法是在一些早期事件期间,例如在控制器预调度期间,从www.example.com/?___store=1重定向到www.example.com。仅当存在___store参数时重定向。

更好的方法是为每个商店设置不同的域。这完全避免了___store参数,并向客户提供了他们在正确地点的明确反馈。

您可以将存储代码放在cookie中,并让index.php检查cookie是否存在,如果存在,则通过其代码加载存储,如果不显示默认存储。

将存储代码添加到URL中,您可以从管理页面启用此功能