【发布时间】:2010-12-07 08:47:10
【问题描述】:
Magento 将产品和类别的 URL 键中的非拉丁字符转换为拉丁字符。如何使用非拉丁字符?
Mage/Catalog/Model/Product/Url.php 中的formatUrlKey 使用Mage/Catalog/Helper/Product/Url.php 中的$_convertTable。我已尝试更改代码,但无法让 Magento 保存非拉丁 URL 并在管理员中正确显示它们。
按照您的建议,我已从 $_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 字符串,但它在浏览器中不起作用。 尝试访问产品 url 时出现 404。
如果我只使用 strtolower 和 trim 而不是 preg_replace:
$urlKey = urlencode($str);
它也不起作用,因为 magento 多次调用 formatUrlKey。 我不明白为什么。
谢谢
【问题讨论】: