新手Magento开发者在这里,但我会尝试保持其结构化。
网站架构:
问题:
在单个产品视图下(即store.com/en/shoes/guess-green-shoes.html),标题中的商店切换器不会生成正确的URL。 IE浏览器。如果我点击德语开关,那么地址是" store.com/de/shoes/guess-grone-schuhe.html" ;,但它应该是" store.com/de/ schuhe /猜测格罗内-schuhe.html"
隐含地这意味着类别slug没有被翻译,我不知道我应该如何行动。有经验的玩家的建议吗?
我尝试了什么:
检查URL重写管理,情况如下
请求路径目标路径
correct_de_link X
correct_en_link X
correct_it_link X
correct_xx_link表示链接正常,已翻译类别和产品名称。因此我认为这是正确的。
我还认为我改变了核心类Mage_Core_Controller_Request_Http-> setPathInfo();或Mage_Core_Model_Store-> getCurrentUrl();但我认为这是不必要的,只能掩盖探测。
如果我没有得到答案我会怎么做:
我将使用php explode()函数解析类别字符串,然后按名称和商店ID在商店之间进行翻译。然后我将手动将其添加到商店切换器。
答案 0 :(得分:0)
Hei guys
所以我深入研究了这个问题,发现它是由Mage_Core_Model_Url_Rewrite_Request类中的_rewriteDb函数引起的。
即__from_store get变量是“en”,“lv”..对于不同的商店而Magento核心试图使用此变量来访问stores数组,但它需要连接到商店代码的商店ID 。所以我添加了一行(在“ - REWRITE HACK”之间)以解决问题,现在一切正常。
$fromStore = $this->_request->getQuery('___from_store');
if (!$this->_rewrite->getId() && $fromStore) {
$stores = $this->_app->getStores();
// START - REWRITE HACK
$fromStore = Mage::app()->getStore( $fromStore )->getId();
// END - REWRITE HACK
if (!empty($stores[$fromStore])) {
/** @var $store Mage_Core_Model_Store */
$store = $stores[$fromStore];
$fromStoreId = $store->getId();
} else {
return false;
}