2015-02-06 83 views
3

我給你一個簡短的問題。 Magento已經有產品和類別的規範工具。Magento Multistore Canonical Tag

但是,這與多家商店如何工作?

例如:

我有3個域。

http://domainname1.at 
http://domainname2.de 
http://domainname3.ch 

他們都有相同的內容(德語)。

當我激活規範標籤的domainname3.ch 標籤的樣子:

<link rel="canonical" href="http://dimainname3.ch" />

但我想那DOMAINNAME2 & domainname3 canonicaltag點DOMAINNAME1這裏獨特的內容位於!

Thx!

回答

1

Magento已經有產品和類別的規範工具...這對多商店是如何工作的?

它目前不具備此功能,因此您需要使用擴展名進行設置。有很多方法可以解決這個問題,但我會這樣做的方式是在添加鏈接時修改rel="canonical"鏈接。

在我的新的或修改過的擴展我會擴展Mage_Page_Block_Html_Head和覆蓋的方法addLinkRel()做這樣的事情:

class My_Page_Block_Html_Head extends Mage_Page_Block_Html_Head 
{ 
    /** 
    * Add Link element to HEAD entity 
    * Overridden to support new canonical cross domain feature. 
    * 
    * @param string $rel forward link types 
    * @param string $href URI for linked resource 
    * @return Mage_Page_Block_Html_Head 
    */ 
    public function addLinkRel($rel, $href) 
    { 
     if ($rel == 'canonical' && $ccd = Mage::getStoreConfig('design/head/canonical_cross_domain')) { 
      $href = preg_replace('/(https?:\/\/)[^\/]+(\/.*)/', "$1$ccd$2", $href); 
     } 
     return parent::addLinkRel($rel, $href); 
    } 
} 

對於這種像預期的那樣,我需要插入值(S)到數據庫表core_config_data。這可以手動完成,或者甚至更好,在我的擴展中,我可以在管理配置部分General/Design/HTML Head中設置一個新字段。我不會在這裏走過,因爲這只是一個很好的接觸。要添加的值將是這樣的:

INSERT INTO core_config_data 
    (scope, scope_id, path, value) 
VALUES 
    ('stores', STORE_ID_FOR_DOMAIN2, 'design/head/canonical_cross_domain', 'domainname1.at'), 
    ('stores', STORE_ID_FOR_DOMAIN3, 'design/head/canonical_cross_domain', 'domainname1.at'); 

現在,只要Magento的是添加標準rel="canonical"鏈接的地方通常會,它會首先檢查是否有配置爲目前店內視圖和替代的跨域該域名而不是當前域名。