1

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

网站架构:

  • Magento 1.8
  • 多商店(1 种语言商店)
  • 由最后一位开发人员轻微修改(我认为如果不是所有核心文件,大多数核心文件都处于原始、未受影响的状态)。
  • DressCode Magento 模板
  • 在 URL 中存储代码 -> true
  • SEO 友好的 URL -> true

问题:

在单个产品视图下(即 store.com/en/shoes/guess-green-shoes.html),标题中的商店切换器不会生成正确的 URL。IE。如果我点击德语开关,那么地址是“store.com/de/shoes/guess-grone-schuhe.html”,但它应该是“store.com/de/schuhe/guess-grone-schuhe.html”。 html”。

隐含地这意味着类别 slug 没有被翻译,我不知道我应该如何行动。有经验的玩家有什么建议吗?

我试过的:

勾选了URL rewrite management,这里的情况如下

请求路径 目标路径
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 在商店之间转换它。然后我将它手动添加到商店切换器。

4

1 回答 1

0

嘿伙计们

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

即 __from_store 获取变量是“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;
            }
于 2016-02-20T14:18:04.057 回答