Вопросы и ответы

Проблема с ЧПУ и кириллицей (Friendly URL Prestashop)

В папке с классами /classes в классе Tools.php замените функцию str2url на

PHP:

 
public static function str2url($str)
 
{
 
if (
function_exists('mb_strtolower'))
 
$str mb_strtolower($str'utf-8');
 
// fix
 
if (preg_match('/[а-я]+/'$str))
 
$cyr = array('а''б''в''г''д''е''ё''ж''з''и''й''к''л''м''н''о''п''р''с''т''у''ф''х''ц''ч''ш''щ''ъ''ы''ь''э''ю''я'' ');
 
$lat = array('a''b''v''g''d''e''yo''zh''z''i''y''k''l''m''n''o''p''r''s''t''u''f''h''c''ch''sch''sh''''y''''e''yu''ya''-');
 
$str = @str_replace($cyr$lat$str);
 
// fix
 
 
$str trim($str);
 
$str preg_replace('/[\x{0105}\x{0104}\x{00E0}\x{00E1}\x{00E2}\x{00E3}\x{00E4}\x{00E5}]/u','a'$str);
 
$str preg_replace('/[\x{00E7}\x{010D}\x{0107}\x{0106}]/u','c'$str);
 
$str preg_replace('/[\x{010F}]/u','d'$str);
 
$str preg_replace('/[\x{00E8}\x{00E9}\x{00EA}\x{00EB}\x{011B}\x{0119}\x{0118}]/u','e'$str);
 
$str preg_replace('/[\x{00EC}\x{00ED}\x{00EE}\x{00EF}]/u','i'$str);
 
$str preg_replace('/[\x{0142}\x{0141}\x{013E}\x{013A}]/u','l'$str);
 
$str preg_replace('/[\x{00F1}\x{0148}]/u','n'$str);
 
$str preg_replace('/[\x{00F2}\x{00F3}\x{00F4}\x{00F5}\x{00F6}\x{00F8}\x{00D3}]/u','o'$str);
 
$str preg_replace('/[\x{0159}\x{0155}]/u','r'$str);
 
$str preg_replace('/[\x{015B}\x{015A}\x{0161}]/u','s'$str);
 
$str preg_replace('/[\x{00DF}]/u','ss'$str);
 
$str preg_replace('/[\x{0165}]/u','t'$str);
 
$str preg_replace('/[\x{00F9}\x{00FA}\x{00FB}\x{00FC}\x{016F}]/u','u'$str);
 
$str preg_replace('/[\x{00FD}\x{00FF}]/u','y'$str);
 
$str preg_replace('/[\x{017C}\x{017A}\x{017B}\x{0179}\x{017E}]/u','z'$str);
 
$str preg_replace('/[\x{00E6}]/u','ae'$str);
 
$str preg_replace('/[\x{0153}]/u','oe'$str);
 
 
// Remove all non-whitelist chars.
 
$str preg_replace('/[^a-zA-Z0-9\s\'\:\/\[\]-]/',''$str);
 
$str preg_replace('/[\s\'\:\/\[\]-]+/',' '$str);
 
$str preg_replace('/[ ]/','-'$str);
 
$str preg_replace('/[\/]/','-'$str);
 
 
// If it was not possible to lowercase the string with mb_strtolower, we do it after the transformations.
 
// This way we lose fewer special chars.
 
$str strtolower($str);
 
 
return 
$str;
 
}


Last updated: Thu, Aug 1 2013 01:00
Тема обращения: Техническая поддержка


 Последнее обновление -> Thu, Aug 1 2013 01:00