Magento多商店产品视图类别URL重写



新手Magento开发人员在这里,但我会尽量保持结构。

网站架构:

  • 马真托 1.8
  • 多商店(1 种
  • 语言的 1 家商店)
  • 由上一个开发人员进行了轻微修改(我认为大多数(如果不是全部)核心文件都处于原始、未受影响的状态)。
  • 着装规范模板
  • 将代码存储在 URL 中 -> true
  • SEO 友好的网址 ->真实

问题:

在单个产品视图(即 store.com/en/shoes/guess-green-shoes.html)下,标题中的商店切换器不会生成正确的URL。即。如果我点击德语开关,那么地址是"store.com/de/shoes/guess-grone-schuhe.html",但它应该是"store.com/de/schuhe/guess-grone-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 在商店之间翻译它。然后我会手动将其添加到商店切换器中。

嘿嘿伙计们

所以我更深入地研究了这个问题,发现它是由类Mage_Core_Model_Url_Rewrite_Request中的_rewriteDb函数引起的。

即__from_store get变量是"en","lv"..对于不同的商店,Magento核心试图使用此变量来访问商店数组,但它需要连接到商店代码的商店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;
            }

相关内容

  • 没有找到相关文章

最新更新