美好的一天。 我有一个Prestashop网站,有不同的语言和不同的国家,其中一些国家使用相同的语言,但不同的货币,或有小的差异,如可用的选项或产品的颜色,但主要产品是相同的。
这已经对谷歌网站管理员工具造成了一些警告,主要是由重复的标题或重复的描述或类似原因引起的。
问题在于澳大利亚物品是一种说英语的物品,但是具有不同的货币和与英国不同的URL。
在网上搜索我看到一个好的做法是在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"
(或其他)部分?
答案 0 :(得分:0)
我开发了一个模块来最终处理它: http://www.matteobononi.it/prestashop_module_hreflang.php 如果需要,请随时使用。
该模块在Prestashop上工作,从1.5到1.6,它在几个页面类型的head部分添加了hreflang元链接。
答案 1 :(得分:-1)
{PRESTA-1.6.x.x} 谁有hreflang问题可以使用这篇文章https://rubendivall.com/anadir-canonical-y-hreflang-en-prestashop-16x-en/ 或者在header.tpl中添加此代码: &LT;头&GT; {代码}&LT;头/&GT;
{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}
答案 2 :(得分:-1)
我写了这个解决方案。将其插入<head></head>
之间并更改语言 / en /& amp;&amp; / 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}