Одна из первых серьезных проблем, с которыми я столкнулась - невозможность ресайза картинок с высоким разрешением. Когда второй мой сайт на Drupal был уже почти готов, я перенесла его на глобальный хостинг, чтоб продолжить тестирование, и поняла, что ресурсов shared-хостинга едва хватит на ресайз картинки 2000х2000 пикселей. Я решила поставить ограничение на разрешение загружаемых картинок, однако Drupal работает так, что картинки, превышающие максимальное разрешение, просто уменьшаются, что как раз и является проблемой.
Как же сделать так, чтобы файл с разрешением, превышающим максимальное, просто запрещался для загрузки и пользователь видел сообщение о превышении допустимых параметров? Приведу свое решение, в случае использования для загрузки файлов модуля FileField.
Нам прийдется всего лишь закомментировать несколько строчек, это небольшое изменение и его легко отменить. Заходим в каталог модуля и открываем файл filefield.module. Находим функцию filefield_validate_image_resolution и комментируем две ветки условия, в которых производится попытка ресайза картинки:
// Try resizing the image with ImageAPI if available./* elseif (module_exists('imageapi') && imageapi_default_toolkit()) {$res = imageapi_image_open($file->filepath);imageapi_image_scale($res, $max_width, $max_height);imageapi_image_close($res, $file->filepath);$resized = TRUE;} */// Try to resize the image to fit the dimensions./* elseif (image_get_toolkit() && @image_scale($file->filepath, $file->filepath, $max_width, $max_height)) {$resized = TRUE;} */
Оставшая ветка как раз и будет возвращать необоходимое нам сообщение об ошибке.
Кроме того, я немного подправила информацию о максимальном разрешении, которая выводится возле поля для загрузки файла. В функции filefield_validate_image_resolution_help я нашла строку текста "Images larger than @max_size pixels will be scaled" и заменила на "Maximum allowed resolution: @max_size pixels".
Вот и все изменения!
Хочу также обратить внимание на то, что при использовании FileField для CCK-поля, максимальные значения нужно указывать в настройках этого конкретного поля (Администрирование - Типы материалов - Ваш_тип - Управление полями), а не в общих настройках "Загрузки файлов".
Комментариев нет:
Отправить комментарий