2014-05-08 23 views
1

美好的一天。 我有一个Prestashop网站,使用不同的语言和不同的国家,其中一些国家使用相同的语言,但货币不同,或者有小的差异,如可用选项或产品颜色,但主要产品是相同的。prestashop中不同语言项目的重复内容

这对谷歌上的网站管理员工具造成了一些警告,主要是由重复标题或重复描述或类似引起的。

问题是,澳大利亚物品是一个说英语的项目,但有不同的货币和来自英国的不同的网址。

我已经看到了一个很好的做法是插入hreflang链路与rel="alternate"所以基本上在网络上搜索,我想获得这样的事情在页面的头:

<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" /> 

在perfct世界,所有的组合都应该从数据库中提取出来,但我也可以用“更多”的静态解决方案来生活。有人知道:

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

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

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

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

回答

-1

{PRESTA-1.6.xx} 谁实施了hreflang有问题,可以使用本文https://rubendivall.com/anadir-canonical-y-hreflang-en-prestashop-16x-en/ 或header.tpl中添加以下代码: <头> {}代码头< />

{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} 
+0

欢迎堆栈溢出,@Messaar。也许评论:https://stackoverflow.com/help/how-to-answer除了你已经提供的代码和链接外,你的回答可以使用一些解释。 – Degan

-1

我写了这个解决方案。将其插入<head></head>之间,改变语言/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}