Ситуация: локальная машина под WinXP + OpenServer (utf-8, MySQL = utf8_general_ci) + OpenCart 1.5.4.1, копия работающего сайта (файлы архива распакованы, база восстановлена в phpMyAdmin'е). Картинки с кириллическими именами не отображаются (в Он-лайне всё ОК).
на старой версии 0.1.7 я по простоте душевной пол-каталога кириллическими именами заполнил - всё было ОК, пока не приспичило апгрейд затеять...
В результате поисков нашёл и доработал скрипт (спасибо автору, оригинал здесь), который по очереди берет из базы все товары и заменяет кириллицу в названиях на латинский эквивалент. Также каждое изображение он переименовывает, если у него в названии есть что-то неподходящее (кириллица , пробел…). Если изображения лежат в папке с русскими символами – то создастся папка с именем в латинице и изображения будут перенесены в нее.
Доработка: оригинальный скрипт не обрабатывал ссылки из разных товарных позиций на одну и ту же картинку, и ситуацию, когда транслитерация разных имён приводит к одинаковой последовательности символов. Кроме того, он портил картинки с прозрачным фоном (теперь файл картинки именно переименовывается, а не пересоздаётся). В результате почти все картинки, которые привязаны к товарам у нас будут иметь названия на латинице. Почти - потому, что всё-таки нашлись у меня несколько файлов, поименованных некириллическими кракозябами - пришлось ручками выкорчёвывать. 1) Берём скрипт (cyrlat.php в "скрепке"), копируем его к себе на сайт в папку /catalog/controller/common 2) Так как операция по сути своей потенциально деструктивная – делаем резервные копии БД и файлов сайта. Само собой разумеется, что за потерянную вами информацию или испорченные файлы … бла…бла…бла… автор ответственности не несет. 3) В браузере заходим по адресу ваш.сайт/index.php?route=common/cyrlat и ждем окончания выполнения скрипта. Если у вас товаров много и скрипт не успеет выполниться до конца – ничего страшного – просто запустите его повторно. После того как скрипт завершит работу – на экран выведется список переименованных картинок и ошибки (Файл_не_найден и Слишком_много_копий_с_таким_именем). Пользуйтесь на здоровье!
cyrlat.php