2015-02-06 49 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"链接的地方通常会,它会首先检查是否有配置为目前店内视图和替代的跨域该域名而不是当前域名。