Magento多商品产品视图类别网址重写

时间:2016-02-19 15:33:12

标签: magento url rewrite categories multistore

新手Magento开发者在这里,但我会尝试保持其结构化。

网站架构:

  • Magento 1.8
  • 多店(1种商店,1种语言)
  • 由最后一位开发人员轻微修改(我认为大多数核心文件都处于原始的,未触及的状态)。
  • DressCode Magento模板
  • 将代码存储在网址中 - >真
  • SEO友好网址 - >真

问题:

在单个产品视图下(即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在商店之间进行翻译。然后我将手动将其添加到商店切换器。

1 个答案:

答案 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;
            }