我现在正在寻找几个小时。我尝试在登录后切换商店语言。
鉴于:
这是我在过去几个小时的工作
我的观察员:
$customerId = Mage::getModel('customer/session')->getCustomer()->getId();
// Get the Store ID we want to switch too
$connection = Mage::getSingleton('core/resource')->getConnection('distributor_read');
$mainLanguage = $connection->fetchAll('SELECT...');
$storeId = $mainLanguage[0]["store_id"];
if (!$storeId == null) {
$storeCode = Mage::app()->getStore($storeId)->getCode();
// Here I have to switch by the store code
return;
}
如果有人可以帮助我,我会很高兴的。 至少我需要一种方法来切换语言或存储视图,但我找不到任何有效的MagentoAPI方法。
答案 0 :(得分:0)
以编程方式设置商店ID
在index.php文件中(在您的语言特定文件夹中),添加以下内容: -
$store_id = 'your_store_id_here';
$mageRunCode = 'store view code';
$mageRunType = 'store';
Mage::app()->setCurrentStore($store_id);
Mage::run($mageRunCode, $mageRunType);
我建议您从登录操作创建一些临时会话变量,并在index.php中读取以设置语言包,如果您的工作已完成,则再次取消设置
希望有人会发现此信息有用:)
答案 1 :(得分:0)
我会告诉大家我为这个案子做了什么。我试图获得Mage_Core_Controller_Response_Http
课程,完全徒劳无功。
所以我继续研究,找到了解决方案。
我用过:
header('Location: '. Mage::app()->getStore()->getBaseUrl().'/customer/account?___store='.$storeCode);
我们去了,登录观察者只是设置语言。
编辑:
设置新标头可能会导致一些问题,因为如果已经呈现了任何html片段,则无法设置新标头。
我工作了......否则:$url = Mage::getUrl('*/*');
$url .= "?___store=" . $storeCode;
$response = Mage::app()->getFrontController()->getResponse();
$response->setRedirect($url);
$response->sendResponse();
exit();
显然仍然存在问题,退出不应该在良好的软件代码中使用,但是简单的return
不起作用,它不会结束或终止观察者操作。
我仍然致力于以正确的方式杀死观察者的解决方案。正如我所说,观察者需要被杀死才能重定向网址。