Транслитерация имени файла при создании медиа entity программно в Drupal

При импорте изображений возникает задача транслитерации. Картинки, например, могут содержать буквы национальной кодировки (кириллицы) и/или иметь несовместимые с файловой системой сервера символы.

Drupal (начиная с 8.2) объявляет специальный интерфейс, который формализует эту задачу:
сore/lib/Drupal/Component/Transliteration/TransliterationInterface.php.

Но нужных нам реализаций в ядре нет, их можно найти в сторонних модулях.

Установим модуль transliterate_filenames.

Он предоставляет имплементацию интерфейса в виде сервиса, а также добавляет свою функцию — sanitizeFilename(). Если требуется выполнить транслитерацию имени файла, то реализуется это так:

Теперь можно создавать файл:

И, наконец, создадим медиа объект на основе сохраненного файла.

В разных версиях друпала может отличаться имя медиа-поля, куда сохраняется file ID. В 10ке — это field_media_image, в более ранних версиях может быть просто field_image.

Мало букафф? Читайте есчо !

Ошибка в Drupal: once is not a function

Май 8, 2023 г.

В Drupal 9/10 нет jQuery плагина once(), потому при использовании этой функции вы увидите сообщение о том, что once - не является функцией. Плагин удобен, но его не сложно заменить в коде буквально парой вставок. Он работает по следующему алгоритму ...

Читать

Attempting to re-run cron while it is already running.

Июнь 3, 2025 г.

Попытка запустить cron параллельно с запущенным кроном не увенчается успехом, так как Drupal использует блокировку. Но иногда, из-за ошибок во время исполнения, блокировка не снимается. Что делать, если блокировка не была снята штатно? На самом ...

Читать

Проверить роль пользователя в twig

Август 16, 2023 г.

Многие стандартные шаблоны в Drupal содержат вывод переменной пользователя (user), что делает возможным реализацию различной логики, в том числе и проверку роли пользователя. Например, вы желаете показывать какой-то элемент шаблона, только для ...

Читать

TMGMT переводит поле view_mode, объявленное плагином menu_link_extras

Июнь 17, 2024 г.

Поля, определенные модулями, не попадают в конфиг файлы сайта, и их не получается настроить привычным способом. В данном случае, требуется как то указать TMGMT модулю, что не нужно переводить поле view_mode. Чтобы предотвратить проблему, можно ...

Читать
 

Комментарии к «Транслитерация имени файла при создании медиа entity программно в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: