在magento中使用非拉丁字符作为产品和类别URL键

时间:2010-12-07 08:47:10

标签: url magento

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。 我不明白为什么。

由于

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

由于Magento只是从表中进行盲目转换,因此从表中删除条目将阻止Magento尝试转换它们。覆盖帮助程序类并删除您不希望看到的条目,并且您应该很顺利。

至于在管理面板中正确显示它们,如果您保存这些非拉丁字符,这是一个单独的问题吗?更具体的信息会有所帮助。