【问题标题】:Different URL keys for different language CMS pages不同语言 CMS 页面的不同 URL 键
【发布时间】:2013-06-09 00:15:27
【问题描述】:

我目前正在建立一个支持几种不同语言的 Magento 商店。

我遇到的一个问题是我不知道如何将两个 CMS 页面链接在一起,这样当用户切换他们的语言时,它们会自动转发到当前的 CMS 页面,但使用他们的首选语言。一种选择是对两个页面使用相同的 URL 键,但这对用户来说不是很友好,因为某些用户会看到不是以他们的母语显示的 URL 键。

让我举个例子:

我有一个“关于我们”页面。在英文版商店中,该页面的 URL 是/about-us。现在一个德国用户登陆该页面并切换他的语言。但是因为“关于我们”的德语版本是“Über uns”,所以该页面的德语版本位于 /ueber-uns,因此用户将看到一个 404 页面,因为不存在德语版本的 /about-us

有人知道如何解决这个问题吗?

更新:进行了更多研究,但一无所获。我不敢相信我是唯一一个有这个问题的人?首选解决方案,对所有语言使用相同的 URL 密钥,看起来非常丑陋且对用户不太友好!

【问题讨论】:

    标签: magento url-rewriting magento-1.7


    【解决方案1】:

    我在 Magento CE 1.8.0.0 中看到了这个错误。这里的问题是 \app\code\core\Mage\Core\Model\Url\Rewrite\Request.php 中的错误分配。

    要解决这个问题,只需将 Mage_Core_Model_Url_Rewrite_Request 类中受保护函数 _rewriteDb() 中的 $fromStore 赋值从

    $fromStore = $this->_request->getQuery('___from_store');
    

    $fromStore = Mage::getModel('core/store')->load($this->_request->getQuery('___from_store'), 'code')->getId();
    

    结果我们可以使用正确的键访问 $stores 数组(使用商店 id 而不是商店代码)。有了这个 if 语句

     if (!empty($stores[$fromStore])) {
    

    以正确的方式工作。

    提醒:不要修改核心文件。在进行任何更改之前,只需将 \app\code\core\Mage\Core\Model\Url\Rewrite\Request.php 复制到 \app\code\local\Mage\Core\Model\Url\Rewrite\Request.php 即可。 你会在这里找到这个德语答案:Rewrite von Seiten in verschiedenen Sprachen und verschiedenen URL Keys in Magento

    【讨论】:

      【解决方案2】:

      上述解决方案有效,但需要一段时间。当在 cms 页面上转到基本 url 时,我们只是执行了以下操作来重写语言转换器 url:

      将以下代码添加到app/design/frontend/default/template_name/template/page/switch/languages.html $url 变量填充的部分之后(在我们上面是这样的

      $url = /*explode( '?',*/$_lang->getCurrentUrl()/*);*/;
      

      所以我们添加了以下内容:

      if(($this->getRequest()->getModuleName() == 'cms') && strpos($url,'.com/')){$url = strstr($url, '.com/', true) . '.com/';}
      elseif(($this->getRequest()->getModuleName() == 'cms') && strpos($url,'.de/')){$url = strstr($url, '.de/', true) . '.de/';}
      elseif(($this->getRequest()->getModuleName() == 'cms') && strpos($url,'.nl/')){$url = strstr($url, '.nl/', true) . '.nl/';}
      

      我在这里所做的是检查是否在 cms 页面上并检查 url 是否包含 .com/ ; .de/ 或 .nl 并剥离之前的部分,然后添加域扩展名。

      在我们的示例中:http://www.mega-watch.com/about-us?blabla 将变为 http://www.mega-watch.com/

      希望这对某人有所帮助..

      【讨论】:

        【解决方案3】:

        因此,我找到的唯一解决方案是为 Magento 重写规则中的每个页面手动创建重定向。这样做,转到Catalog -> URL Rewrite Management 并按以下格式添加每个页面:

        因此,如果用户正在使用 Francais 商店视图并请求 /url-in-english,重定向将启动并将用户重定向到 /url-in-french

        这当然不是一个理想的解决方案,如果可以直接“链接”两个页面,那将是首选,但我想我暂时必须使用它。如果有人提出更好的解决方案,请随时添加您的!

        【讨论】:

        • 你的头像值一千字,呵呵。我的翻译包(pt_br)在管理员中反转了目标路径和请求路径,我不知道为什么它不起作用。感谢分享图片。 :)
        猜你喜欢
        • 2013-12-25
        • 1970-01-01
        • 1970-01-01
        • 2014-12-31
        • 1970-01-01
        • 2019-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多