我正在使用带有多个商店和商店视图的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.
作为dashes are recommended分隔网址中的字词,我正在寻找一种方法来使用短划线作为商店代码。覆盖Magento的验证没有问题,但我想知道是否有任何特殊原因在这里禁用破折号。有人有想法吗?
谢谢, 的Mathias
答案 0 :(得分:4)
您可以随时尝试在Mage_Core_Model_Mysql4_Store
中复制app/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;
}