Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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
Magento:商店代码中的破折号_Magento_Seo - Fatal编程技术网

Magento:商店代码中的破折号

Magento:商店代码中的破折号,magento,seo,Magento,Seo,我使用Magento时有多个商店和商店视图(1个网站,4个商店,每个商店有一个商店视图)。我激活了“将商店代码添加到URL”选项,可以通过访问我的不同商店,效果很好。然而,我有一个商店的代码,应该以两个词命名的搜索引擎优化的目的。不幸的是,Magento只允许使用下划线(389;)而不是破折号(-)作为存储代码: The store code may contain only letters (a-z), numbers (0-9) or underscore(_), the first cha

我使用Magento时有多个商店和商店视图(1个网站,4个商店,每个商店有一个商店视图)。我激活了“将商店代码添加到URL”选项,可以通过访问我的不同商店,效果很好。然而,我有一个商店的代码,应该以两个词命名的搜索引擎优化的目的。不幸的是,Magento只允许使用下划线(389;)而不是破折号(-)作为存储代码:

The store code may contain only letters (a-z), numbers (0-9) or underscore(_), the first character must be a letter.
至于在URL中分隔单词,我正在寻找一种使用破折号作为存储代码的方法。覆盖Magento的验证没有问题,但我想知道这里禁用破折号是否有什么特殊原因。有人有主意吗

谢谢,
Mathias

您可以尝试在
app/code/local
中复制
Mage\u Core\u Model\u Mysql4\u Store
,并修改正则表达式以允许破折号。其原因可能是Magento在命名约定中将
\uu
解释为分隔符或空格的方式

我想这是有原因的,但具体原因我不确定。如果您确实进行了更改,我建议您先在代码库/magento的副本上进行更改,以确定在生产站点上进行更改之前是否有任何影响

protected function _beforeSave(Mage_Core_Model_Abstract $model)
{
    if(!preg_match('/^[a-z]+[a-z0-9_\-]*$/',$model->getCode())) {
        Mage::throwException(
            Mage::helper('core')->__('The store code may contain only letters (a-z), numbers (0-9) or underscore(_), the first character must be a letter'));
    }

    return $this;
}

解释:代码是一个标识符,通常表示一个单词。因此,它由单词字符类的字符组成。另外,不以数字开头听起来像是命名标识符。因此,您的两个单词用例不适用于代码,因为它代表一个单词。因此,不允许使用非单词字符。已选择小写以进一步简化代码。因此,您发现可以在URI的path组件中使用单个单词,并且发现存储代码不适合两个单词。URL重写和输出筛选器可以处理此问题。嗨,Mathias。事实上,我也面临同样的要求,我会对你的经验感兴趣。您最终选择了哪种解决方案?