Плагин транслитерации имен загружаемых файлов (например, картинок) в MODX Revo

Бывает, что некоторые хосты не понимают русские имена файлов или браузер может криво интерпретировать кирилические буквы, чтобы этого не происходило — создадим плагин, который будет переименовывать загружаемые файлы.

В MODX уже заложены основы для реализации автоматических транслитераций или переводов для псевдонимов страниц. Например, можно установить дополнение Translit, который будет автоматически транслитерировать адреса страниц. Или дополнение yTranslit, который будет переводить адреса на английский с помощью сервиса Яндекс-переводов.

Установим любое допоплнение из указанных (Translit или yTranslit) и создадим плагин.

Назовоем плагин «transliterateFileNames» и привяжем к нему в «Системных событиях» плагина «OnFileManagerUpload».

<?php
switch ($modx->event->name) {
case 'OnFileManagerUpload':
$generator = $modx->newObject('modResource');
$bases = $source->getBases($directory);
$fullPath = $bases['pathAbsolute'].ltrim($directory,'/');
$directory = $source->fileHandler->make($fullPath);
foreach ($files as $file) {
$ext = @pathinfo($file['name'],PATHINFO_EXTENSION);
rename($directory->getPath().$file['name'], $directory->getPath() .
$generator->cleanAlias($file['name']));
}
break;
default: break;
}
return true;

Плагин транслитерации имен загружаемых файлов

Кcтати, в «Системных настройках» в разделе «Дружественные URL» можно указать формат фильтрации символов для псевдонимов в настройке «Метод фильтрации символов в псевдонимах».

В MODX заложены следующие форматы:

  • «pattern» — псевдоним может состоять только из символов соответствующих регулярному выражению (включен по умолчанию);
  • «legal» — псевдоним может состоять из любых допустимых в URL символов;
  • «alpha» — псевдоним может состоять только из букв;
  • «alphanumeric» — псевдоним может состоять только из букв и цифр (я использую именно его).

Помимо созданного плагина можно использовать дополнение filetranslit, но в отличие от созданного плагина, дополнение не тестировалось на новой версии MODX Revo.

Информация частично взята отсюда — https://ilyaut.ru/reposts/transliteration-of-files-names/


Свяжитесь с нами

Нажимая на кнопку «Отправить», я даю свое согласие на обработку персональных данных в соответствии с законом №152-ФЗ «О персональных данных» от 27.07.2006 и принимаю условия Пользовательского соглашения