3

我将 Magento 与多个商店和商店视图一起使用(1 个网站,4 个商店,每个商店都有一个商店视图)。我激活了“将商店代码添加到网址”选项,并且可以通过http://example.com/storecode/访问我的不同商店,效果很好。但是,我有一个商店代码,出于 SEO 目的,应该以两个词命名。不幸的是,Magento 只允许使用下划线 (_) 而不是破折号 (-) 作为商店代码:

The store code may contain only letters (a-z), numbers (0-9) or underscore(_), the first character must be a letter.

由于建议使用破折号来分隔 URL 中的单词,因此我正在寻找一种将破折号用作商店代码的方法。覆盖 Magento 的验证没有问题,但我想知道这里是否有任何特殊原因禁用破折号。有人有想法吗?

谢谢, 马蒂亚斯

4

1 回答 1

4

您始终可以尝试复制Mage_Core_Model_Mysql4_Storeinapp/code/local并修改正则表达式以允许破折号。可能的原因是 Magento_在命名约定中将其解释为分隔符或空格的方式。

我想这是有原因的,但具体是什么我不确定。如果您确实进行了更改,我建议您事先在您的代码库/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;
}
于 2012-04-27T21:29:12.747 回答