Magento преобразует нелатинские символы в ключе URL продуктов и категорий в латинские символы. Как я могу использовать нелатинские символы?
formatUrlKey
в Mage/Catalog/Model/Product/Url.php
использует $_convertTable
в Mage/Catalog/Helper/Product/Url.php
. Я пытался изменить код, но не могу заставить 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.
Если вместо preg_replace, strtolower и trim я использую только:
$urlKey = urlencode($str);
Это также не работает, потому что magento вызывает formatUrlKey несколько раз.
Я не понимаю почему.
Спасибо