Сюрприз от VirtueMart 2.6.6 - при сохранении товара в поле альяса (псевдоним) не происходит транслитерация русских букв.
Поиск в интернете дал такой результат:
нужно в файле
administrator/components/com_virtuemart/helpers/vmtable.php
найти
$unicodeslugs = VmConfig::get('transliterateSlugs',false);
и заменить на
$unicodeslugs = VmConfig::get('transliterateSlugs',true);
или в таблице #__virtuemart_configs в поле config добавить:
|transliterateSlugs=s:1:"1";
После этого транслитерация работает, но в альясе остаются точки и запятые и твердый знак похоже преобразуется в #, которое записывается в альяс уже кодированным.
Поэтому я добавил еще две строки в файл vmtable.php
$this->$slugName = str_replace(array(',','.'),'-',$this->$slugName); $this->$slugName = str_replace(array('ъ','Ъ'),'',$this->$slugName);
после
// Trim white spaces at beginning and end of alias and make lowercase $this->$slugName = trim(JString::strtolower($this->$slugName)); $this->$slugName = str_replace(array('`','´',"'"),'',$this->$slugName);
В таком варианте транслитерация работает, другие нетранслитерируемые символы пока не попадались..
На случай, если есть альясы с точками, запятыми, можно сделать такой запрос на обновление поля slug:
UPDATE #__virtuemart_products_ru_ru SET slug=REPLACE(slug, '.', '-')
Если нужно заменить запятую во втором параметре replace указываем запятую.
Комментарии
Все работает.
RSS лента комментариев этой записи