2014-05-08 24 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}