Magento将产品和类别的URL密钥中的非拉丁字符转换为拉丁字符。我如何使用非拉丁字符?
formatUrlKey
中的{p> Mage/Catalog/Model/Product/Url.php
使用$_convertTable
中的Mage/Catalog/Helper/Product/Url.php
。我试图更改代码,但我不能让Magento保存非拉丁语网址并在管理员中正确显示。
我建议你从$ _convertTable中删除希伯来字母。 问题是formatUrlKey用' - '替换不是0-9或a-z的字符:
public function formatUrlKey($str)
{
$urlKey = preg_replace('#[^0-9a-z]+#i', '-', Mage::helper('catalog/product_url')->format($str));
$urlKey = strtolower($urlKey);
$urlKey = trim($urlKey, '-');
return $urlKey;
}
所以我重写了这个方法并将其改为:
$urlKey = preg_replace('#[^0-9a-zא-ת]+#i', '-', Mage::helper('url')->format($str));
现在magento正确保存并显示url字符串,但它在浏览器中不起作用。 在尝试访问产品网址时,我收到了404。
如果不是preg_replace,而是strtolower和trim我只使用:
$urlKey = urlencode($str);
它也不起作用,因为magento多次调用formatUrlKey。 我不明白为什么。
由于
答案 0 :(得分:1)
您好 此扩展程序对您有所帮助。
http://www.magentocommerce.com/magento-connect/alexhost/extension/6587/magefast_seflinkmultilanguage
答案 1 :(得分:0)
由于Magento只是从表中进行盲目转换,因此从表中删除条目将阻止Magento尝试转换它们。覆盖帮助程序类并删除您不希望看到的条目,并且您应该很顺利。
至于在管理面板中正确显示它们,如果您保存这些非拉丁字符,这是一个单独的问题吗?更具体的信息会有所帮助。