Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento多存储规范标记_Php_Magento_Canonical Link_Multistore - Fatal编程技术网

Php Magento多存储规范标记

Php Magento多存储规范标记,php,magento,canonical-link,multistore,Php,Magento,Canonical Link,Multistore,我有一个简短的问题要问你。Magento已经有了一个针对产品和类别的规范化工具 但这在多家商店中是如何运作的呢 例如: 我有3个域名 http://domainname1.at http://domainname2.de http://domainname3.ch 它们都有相同的内容(德语) 当我激活domainname3.ch的规范标记时 标记看起来像: 但我希望domainname2和domainname3 canonicaltag指向唯一内容所在的domainname1 谢谢 Mage

我有一个简短的问题要问你。Magento已经有了一个针对产品和类别的规范化工具

但这在多家商店中是如何运作的呢

例如:

我有3个域名

http://domainname1.at
http://domainname2.de
http://domainname3.ch
它们都有相同的内容(德语)

当我激活domainname3.ch的规范标记时 标记看起来像:

但我希望domainname2和domainname3 canonicaltag指向唯一内容所在的domainname1

谢谢

Magento已经有了一个针对产品和类别的规范化工具。。。这是如何与多个商店协同工作的

它目前还没有这种开箱即用的能力,所以你需要用一个扩展来设置它。有很多方法可以做到这一点,但我的方法是在添加链接时修改链接

在新的或修改的扩展中,我将扩展
Mage\u Page\u Block\u Html\u 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);
    }
}
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');
要使其按预期工作,我需要在
core\u config\u data
数据库表中插入值。这可以手动完成,甚至更好,在我的扩展中,我可以在管理配置部分General/Design/HTML Head中设置一个新字段。我不会在这里讨论这个问题,因为这只是一个很好的接触。要添加的值如下所示:

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);
    }
}
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”
链接,它就会首先检查是否为当前商店视图配置了跨域链接,并将其替换为当前域名