Это скорее личная заметка, нежели для масс.
1) Делаем глобальные настройки SEO инфоблока с товарами (как на туле)
2) В админке, в настройках главного модуля ставим эти галки:
3) В файле (ядро битрикса) /bitrix/modules/main/classes/general/file.php делаем поиск по слову: translit_original_file_name (функция transformName), меняем объявление переменной и должно получиться вот так:
if(COption::GetOptionString("main", "translit_original_file_name", "N") == "Y") { $fileName = CUtil::translit($fileName, LANGUAGE_ID, array("max_len"=>1024, "safe_chars"=>".", "replace_space" => '-', 'replace_other' => '-')); }
Т.е. мы добавляем параметр replace_other в массив.
4) Добавляем этот код в init.php (взять с тула).
5) Файл /cron/renameAllPictures.php взять с тула и запустить на проекте один раз.
P.S. Если кому нужно готовое решение – цена вопрос 100$ без моей настройки/адаптации. Только код для вставки в init.php и cron скрипт для единоразовой замены урлов во всех имеющихся товарах на проекте. Работоспособность решения гарантирую.