[Решено] кириллица в именах картинок - openСart, openServer, UTF-8 и cp1251

Тема в разделе "OpenCart", создана пользователем ГорМастер, 31 май 2013.

Статус темы:
Закрыта.
  1. ГорМастер

    ГорМастер

    Регистрация:
    1 апр 2013
    Сообщения:
    115
    Симпатии:
    22
    Ситуация: локальная машина под WinXP + OpenServer (utf-8, MySQL = utf8_general_ci) + OpenCart 1.5.4.1, копия работающего сайта (файлы архива распакованы, база восстановлена в phpMyAdmin'е).
    Картинки с кириллическими именами не отображаются (в Он-лайне всё ОК).

    Пытаемся добавить картинку товара.
    Открываем МенеджерИзображений-Загрузить-(выбираем файл с кириллическим именем)-Ок, "Файл загружен!" Картинка с кириллическим именем отображается как NoImage и в Менеджере и далее на страницах. Как только переименовываем латиницей - всё ОК, жизнь прекрасна.

    Пожалуйста, подскажите, где искать / что настроено "не так"?
     
  2. kama812

    kama812

    Регистрация:
    30 мар 2013
    Сообщения:
    311
    Симпатии:
    195
    как я понял opencart тут не при чем, проблема в сервере который использует openserver, что там? apach или nginx по любому)
    в инете много раз поднималась эта тема, поиск 'apache кириллические имена'
    а по сути так делать не надо, ни на локалке, ни на сервере, кириллицы в именах файлов быть не должно (если конечно жить не скучно:wink: )
     
  3. Florenco

    Florenco

    Регистрация:
    3 мар 2013
    Сообщения:
    220
    Симпатии:
    102
    Менеджер изображений опенкарта не поддерживает кириллические имена файлов и папок. Да и вообще их не должно быть.
     
  4. ГорМастер

    ГорМастер

    Регистрация:
    1 апр 2013
    Сообщения:
    115
    Симпатии:
    22
    да, в версии 1.5.4.1 Менеджер действительно спотыкается на кириллице, а вот на старой версии 0.1.7 я по простоте душевной пол-каталога кириллическими именами заполнил - всё было ОК, пока не приспичило апгрейд затеять...

    Решение:

    В результате поисков был найден и доработан скрипт
    (спасибо автору - http://finesites.ru/opencart/avtomaticheskoe-pereimenovanie-izobrazhenij-s-kirilitsej-v-nazvaniyah),
    который по очереди берет из базы все товары и заменяет кириллицу в названиях на латинский эквивалент. Также каждое изображение он переименовывает, если у него в названии есть что-то неподходящее (кириллица , пробел…). Если изображения лежат в папке с русскими символами – то создастся папка с именем в латинице и изображения будут перенесены в нее.

    Доработка: В оригинале скрипт не обрабатывал множественные ссылки из разных товарных позиций на одну и ту же картинку и ситуацию, когда транслитерация разных имён приводит к одинаковой последовательности символов.

    В результате почти все картинки, которые привязаны к товарам у нас будут иметь названия на латинице.
    Почти - потому, что нашлись у меня несколько файлов, поименованных некириллическими кракозябами - пришлось ручками выкорчёвывать.


    1) Берём скрипт по спойлером (см. ниже). В Блокноте создаём файл с именем cyrlat.php, вставляем скрипт, копируем файл к себе на сайт в папку /catalog/controller/common

    2) Так как операция по сути своей потенциально деструктивная – делаем резервные копии БД и файлов сайта.
    Само собой разумеется, что за потерянную вами информацию или испорченные файлы … бла…бла…бла… автор ответственности не несет.

    3) В браузере заходим по адресу http://ваш.сайт/index.php?route=common/cyrlat и ждем окончания выполнения скрипта. Если у вас товаров много и скрипт не успеет выполниться до конца – ничего страшного – просто запустите его повторно.

    После того как скрипт завершит работу – на экран выведется список переименованных картинок и ошибки (Файл_не_найден и Слишком_много_копий_с_таким_именем).

    Пользуйтесь на здоровье!


     
    oPPPs и Spartak нравится это.
Статус темы:
Закрыта.