我正在使用Magento WordPress 集成插件从并行 Magento 安装中调用块,以便从 Magento 中提取适当的菜单块。
这工作得很好,除了一件事,这些网站是多语言的。
我在 Wordpress 中插入了一些代码,以便在更改语言时,它将存储 cookie 更改为适当的语言,以确保 Magento 以正确的语言加载菜单。
这非常有效,只是由于某种原因,它需要在加载正确的语言之前单击两次。我可以在网络检查器中看到“商店”cookie 设置为正确的语言,但插件似乎在以某种方式发生之前加载了 Magento 内容。
除了分离菜单并在系统之间手动编码之外,我真的不知道该怎么做。我正在与插件的实际开发人员进行讨论,但他自己无法想到解决方案(不幸的是,当我要求获得一些支持的可能性时,讨论被终止了)。
无论如何,如果有人知道如何解决这个问题,我将非常感激它,因为似乎没有人找到解决方案来解决我所想象的一个相当典型的设置。
--
编辑:这是我到目前为止所写的并且正在努力开始工作。它从 URL 中提取语言字符串,然后设置store
cookie。通过查看Plugin API/Action Reference,它是加载顺序中发生的第一件事。我确实有一个必须使用的插件,并且可以确认它可以工作,但我也尝试过将它连接到注册分类、帖子类型等......出于某种奇怪的原因,它仍然无法工作,直到第二次点击,即使它发生得很远在主题或常规插件加载之前。
function set_store_cookie() {
if( preg_match("(/(de|en|jp)/)",$_SERVER[REDIRECT_URL],$m)) {
$pbCurrentLanguage = $m[1];
} else {
$currentLanguage = "en";
}
setcookie('store', $currentLanguage, time()+(60 * 60 * 24 * 1), COOKIEPATH, '.domain.com', false);
}
add_action('registered_post_type', 'set_store_cookie');
--
编辑 2:
在下面与 Mihai 广泛交谈后,我们讨论了很多事情,但主要发现无论如何,如果store
设置了 cookie,Wordpress 会加载 cookie 指定的语言,即使是静态调用$app = Mage::app('desired_lang', 'store');
这真的很令人困惑,因为它陷入了与以前相同的问题:如果设置了 cookie,Wordpress 将无法加载适当的 Magento 语言,直到第二次刷新。
与此同时,我已经通过在每次加载 Wordpress 时删除 cookie 来解决这个问题,但这似乎真的是一个不理想的解决方案。让我感到莫名其妙的是,即使调用Mage::app
静态加载错误的语言并被 cookie 覆盖(并且在下一次加载时也是如此)