我有一个简短的问题要问你。Magento已经为产品和类别提供了一个规范的工具。
但这是如何与多家商店合作的呢?
示例:
我有3个域名。
http://domainname1.at
http://domainname2.de
http://domainname3.ch
所有这些都有相同的内容(德语)。
当我激活domainname3.ch的规范标记时标签看起来像:
<link rel="canonical" href="http://dimainname3.ch" />
但是我想要域名2&domainname3规范标记指向唯一内容所在的domainname1!
Thx!
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);
}
}
为了按预期工作,我需要在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"
链接时,它都会首先检查是否为当前商店视图配置了跨域链接,并替换为该域名而不是当前域名。