Internationalization 在prestashop中为不同语言的项目复制内容

Internationalization 在prestashop中为不同语言的项目复制内容,internationalization,seo,prestashop,canonical-link,rel,Internationalization,Seo,Prestashop,Canonical Link,Rel,大家好。 我有一个Prestashop网站,有不同的语言和不同的国家,其中一些国家使用相同的语言,但不同的货币,或者有一些小的差异,例如产品的可用选项或颜色,但主要产品是相同的 这在谷歌网站管理员工具上引起了一些警告,主要是由于重复的标题、重复的描述或类似的原因 问题是澳大利亚商品是说英语的商品,但与英国商品的货币和URL不同 在网上搜索时,我发现一个很好的做法是插入带有rel=alternate的hreflang链接,因此基本上,我希望在页面的标题中获得类似的内容: <link rel=

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

这在谷歌网站管理员工具上引起了一些警告,主要是由于重复的标题、重复的描述或类似的原因

问题是澳大利亚商品是说英语的商品,但与英国商品的货币和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" />
在perfct世界中,所有的组合都应该从数据库中获取,但我也可以使用更静态的解决方案。有人知道:

1这是我在网站管理员工具中注意到的问题的解决方案吗

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

3是否有干净的方法处理en us或任何其他组合零件


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

我开发了一个模块来最终处理它: 如果您需要,请随时使用它

该模块在1.5到1.6版本的Prestashop上工作,它在几种页面类型的标题部分添加了hreflang元链接。

{PRESTA-1.6.x.x} 对hreflang有问题的人可以使用本文 或将此代码添加到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}

我写了这个解决方案。将其插入并更改语言/en/&&/es/etc


欢迎来到堆栈溢出@Messaar。也许回顾一下:除了您已经提供的代码和链接之外,您的答案还需要一些解释。
    {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}