gpt4 book ai didi

magento - 使用 magento 事件观察器以编程方式更改商店 View

转载 作者:行者123 更新时间:2023-12-01 10:54:30 25 4
gpt4 key购买 nike

我正在捕获以下事件以执行进一步的逻辑:

core_block_abstract_prepare_layout_before

在 Observer 类中我这样做:

Mage::app()->setCurrentStore($storeView);

Mage::run($storeCode, "store");

但这会引发异常:

Mage registry key "application_params" already exists

基本上我想做的是“根据当前 IP 更改语言(商店 View )”,我正试图通过 magento 自定义模块实现这一点。

我希望能够使用 magento 事件观察器以编程方式更改 magento 的默认商店 View ?是否可以在不重定向到所选商店的情况下这样做?我的意思是在页面加载之前设置商店 View 的值?

最佳答案

这就是我解决问题的方法。我已经安装了 GeoIP 扩展。由此我们可以得到基于IP的国家代码。我在观察器中添加了一个函数,它只会在页面加载事件 controller_action_predispatch 时触发一次,在观察器中,我使用 switch case 在商店之间切换。这是我的函数和开关盒。

public function getLocationInfoByIp($observer) {

$geoIP = Mage::getSingleton('geoip/country');
$cnCode = $geoIP->getCountry();

switch ($cnCode) {

case "US": {
Mage::app()->setCurrentStore('en');
break;
}
case "IN": {
Mage::app()->setCurrentStore('de');
break;
}
default: {
Mage::app()->setCurrentStore('en');
break;
}
}
}

关于magento - 使用 magento 事件观察器以编程方式更改商店 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16103103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com