Magento通过登录更改语言

时间:2013-07-20 15:26:48

标签: php magento magento-1.7

我现在正在寻找几个小时。我尝试在登录后切换商店语言。

鉴于:

  • 我想切换的商店的ID。
  • 事件观察员也已完成。

这是我在过去几个小时的工作

我的观察员:

$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方法。

2 个答案:

答案 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不起作用,它不会结束或终止观察者操作。 我仍然致力于以正确的方式杀死观察者的解决方案。正如我所说,观察者需要被杀死才能重定向网址。