【问题标题】:duplicate content in prestashop for items in different languagesprestashop 中不同语言项目的重复内容
【发布时间】:2014-05-08 10:58:11
【问题描述】:

大家好。 我有一个 Prestashop 网站,有不同的语言和不同的国家/地区,其中一些国家使用相同的语言,但货币不同,或者存在细微差异,例如可用选项或产品颜色,但主要产品是相同的。

这在google上的站长工具上引起了一些警告,主要是由于重复的标题,或重复的描述或类似的原因。

问题是澳大利亚商品是一种英语商品,但与英国商品具有不同的货币和不同的 URL。

在网上搜索我发现一个好的做法是插入带有rel="alternate"hreflang 链接,所以基本上,我想在页面头部获得类似的内容:

<link rel="alternate" hreflang="en-us" href="http://www.example.com/en/page.html" />
<link rel="alternate" hreflang="en" href="http://www.example.com/en/page.html" />
<link rel="alternate" hreflang="en-au" href="http://www.example.com/au/page.html" />
<link rel="alternate" hreflang="de" href="http://www.example.com/de/seite.html" />

在一个完美的世界中,所有的组合都应该从数据库中获取,但我也可以使用“更多”的静态解决方案。有人知道吗:

1) 这是我在网站管理员工具中发现的问题的解决方案吗?

2) 在这种情况下,这可能是处理重复内容警告的最佳方式(如果答案 1 为“否”)

3) 是否有一种干净的方式来处理"en-us"(或任何其他组合)部分?

4) 是否有一种干净的方式来处理"/de/seite.html"(或其他)部分?

【问题讨论】:

    标签: internationalization seo prestashop canonical-link rel


    【解决方案1】:

    我已经开发了一个模块来最终处理它: http://www.matteobononi.it/prestashop_module_hreflang.php 如果需要,请随时使用它。

    该模块适用于 Prestashop 从 1.5 到 1.6,它在几种页面类型的 head 部分添加了 hreflang 元链接。

    【讨论】:

      【解决方案2】:

      {PRESTA-1.6.x.x} 对hreflang有问题的可以使用这篇文章https://rubendivall.com/anadir-canonical-y-hreflang-en-prestashop-16x-en/ 或将此代码添加到 header.tpl 中:

      {code}
      {if $page_name == 'category'}
      <link rel="canonical" href="{$link->getCategoryLink($smarty.get.id_category, null, $id_lang,null,null )}" />    
      {if $languages|@count > 1}{foreach $languages as $lang}<link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getCategoryLink($smarty.get.id_category, null, $lang.id_lang,null,null )}" />{/foreach}{/if}
      {if $start!=$stop}{if $p != 1 && $p_previous != 1}{assign var='p_previous' value=$p-1}
      <link rel="prev" href="{$link->getCategoryLink($smarty.get.id_category, null, $id_lang,null,null )}{$link->goPage($requestPage, $p_previous)}" />{/if}
      {if $pages_nb > 1 AND $p != $pages_nb}{assign var='p_next' value=$p+1}
      <link rel="next" href="{$link->getCategoryLink($smarty.get.id_category, null, $id_lang,null,null )}{$link->goPage($requestPage, $p_next)}" />{/if}{/if}
      {/if}
      {if $page_name == 'product'}    
      <link rel="canonical" href="{$link->getProductLink($smarty.get.id_product, null, null, null, $id_lang, null, 0, false)}" />    
      {if $languages|@count > 1}{foreach $languages as $lang}<link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getProductLink($smarty.get.id_product, null, null, null, $lang.id_lang, null, 0, false)}" />{/foreach}{/if} 
      {/if}
      {if $page_name == 'cms' && $smarty.get.id_cms > 0}
      <link rel="canonical" href="{$link->getCMSLink($smarty.get.id_cms, null, false, $id_lang)}" />
      {if $languages|@count > 1}{foreach $languages as $lang}<link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getCMSLink($smarty.get.id_cms, null, false, $lang.id_lang)}" />{/foreach}{/if}
      {/if}
      {if $page_name == 'manufacturer' && $smarty.get.id_manufacturer > 0}
      <link rel="canonical" href="{$link->getManufacturerLink($smarty.get.id_manufacturer, null, $id_lang)}" />    
      {if $languages|@count > 1}{foreach $languages as $lang}<link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getManufacturerLink($smarty.get.id_manufacturer, null, $lang.id_lang)}" />{/foreach}{/if}
      {/if}
      {if $page_name == 'manufacturer' && !isset($smarty.get.id_manufacturer)}
      <link rel="canonical" href="{$link->getPageLink('manufacturer', 'true', $id_lang)}" />    
      {if $languages|@count > 1}{foreach $languages as $lang}<link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getPageLink('manufacturer', 'true', $lang.id_lang)}" />{/foreach}{/if}
      {/if}
      {if $page_name == 'index'}
      <link rel="canonical" href="{$link->getPageLink('index', 'true', $id_lang)}" />    
      {if $languages|@count > 1}{foreach $languages as $lang}<link rel="alternate" hreflang="{$lang.iso_code}" href="{$link->getPageLink('index', 'true', $lang.id_lang)}" />{/foreach}{/if}
      {/if}
      
      【解决方案3】:

      我写了这个解决方案。将其插入&lt;head&gt;&lt;/head&gt; 之间并更改语言/en/ && /es/ 等。

          {if mb_strstr($smarty.server.REQUEST_URI, '/en/')}
              <link rel="alternate" hreflang="es" href=http://{$smarty.server.SERVER_NAME}/es{substr($smarty.server.REQUEST_URI, 3)}  />
              <link rel="alternate" hreflang="de" href=http://{$smarty.server.SERVER_NAME}/de{substr($smarty.server.REQUEST_URI, 3)} />           
          {elseif mb_strstr($smarty.server.REQUEST_URI, '/es/')}
              <link rel="alternate" hreflang="en" href=http://{$smarty.server.SERVER_NAME}/en{substr($smarty.server.REQUEST_URI, 3)} />
              <link rel="alternate" hreflang="de" href=http://{$smarty.server.SERVER_NAME}/de{substr($smarty.server.REQUEST_URI, 3)} />
          {elseif mb_strstr($smarty.server.REQUEST_URI, '/de/')}
              <link rel="alternate" hreflang="es" href=http://{$smarty.server.SERVER_NAME}/es{substr($smarty.server.REQUEST_URI, 3)} />
              <link rel="alternate" hreflang="en" href=http://{$smarty.server.SERVER_NAME}/en{substr($smarty.server.REQUEST_URI, 3)} />
          {/if}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-09
        • 2016-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多