Во-первых, воспользовавшись этим плагином, я бы порекомендовал рассмотреть структуру каталогов по умолчанию, чтобы упростить ваше приложение.Вы не хотите редактировать плагин напрямую, так как это сделает обновление более болезненным ...
# /app/webroot/media/transfer/img/slug.ext (for the original file storage)
# /app/webroot/media/filter/l/img/slug.ext (for the large image filter)
# /app/webroot/media/filter/m/img/slug.ext (for the medium image filter)
# /app/webroot/media/filter/s/img/slug.ext (for the small image filter)
Однако файл конфигурации медиа-плагина находится в /app/plugins/media/config/core.php
и содержит некоторые константы, которые вы можете переопределить для всего приложения, определив их в /app/config/bootstrap.php
first .Чтобы получить формат, похожий на тот, который вы хотите, вы можете определить следующие переменные:
define('MEDIA_TRANSFER', WWW_ROOT . 'media' . DS . 'original' . DS);
define('MEDIA_FILTER', WWW_ROOT . 'media' . DS);
define('MEDIA_TRANSFER_URL', 'media/original/');
define('MEDIA_FILTER_URL', 'media/');
# /app/webroot/media/original/img/slug.ext (for the original file storage)
# /app/webroot/media/l/img/slug.ext (for the large image filter)
# /app/webroot/media/m/img/slug.ext (for the medium image filter)
# /app/webroot/media/s/img/slug.ext (for the small image filter)
(Примечание: вы также можете установить вышеупомянутые пути для каждой модели, передав правильные параметры конфигурации, когдадобавив поведение к вашим моделям.)
Вы также можете переопределить имена используемых фильтров изображений, чтобы приблизиться к вашей цели.Вам нужно сделать это снова в /app/config/bootstrap.php
, но после вы загрузили конфигурацию плагина Media:
require APP . 'plugins' . DS . 'media' . DS . 'config' . DS . 'core.php';
Configure::write('Media.filter.image', array(
'small' => array('convert' => 'image/png', 'zoomCrop' => array(100, 100)),
'medium' => array('convert' => 'image/png', 'fitCrop' => array(300, 300)),
'large' => array('convert' => 'image/png', 'fit' => array(600, 440)),
));
# /app/webroot/media/original/img/slug.ext (for the original file storage)
# /app/webroot/media/large/img/slug.ext (for the large image filter)
# /app/webroot/media/medium/img/slug.ext (for the medium image filter)
# /app/webroot/media/small/img/slug.ext (for the small image filter)
Если вы читаете документацию по методу Media.TransferBehavior::transferTo()
, вы увидите, что вы можете настроить последнюю часть пути (т. Е. img/slug.ext
), переопределив этот метод в своей модели (например, MyModel::transferTo()
).Что-то вроде этого сделало бы вас еще ближе:
class MyModel extends AppModel {
public function transferTo($via, $from) {
extract($from);
$mime = Mime_Type::guessName($mimeType ? $mimeType : $file);
$name = $this->_imgName();
$path = $mime . DS . $name
$path .= !empty($extension) ? '.' . strtolower($extension) : null;
return $path;
}
}
# /app/webroot/media/original/image/129916996632c787226a0b.ext (for the original file storage)
# /app/webroot/media/large/image/129916998392a3570a1828.ext (for the large image filter)
# /app/webroot/media/medium/image/12991699891c7625bebedb.ext (for the medium image filter)
# /app/webroot/media/small/image/12991699938ab22d80cfc6.ext (for the small image filter)
Хотя это не совсем то, что вы искали (/large/image/
против /image/large/
), это примерно так же далеко, как вы можете пойти без переопределения больших порцийплагин.Это связано с тем, что путь обрабатывается как две части (например, /media/large/
и image/129916998392a3570a1828.ext
), которые добавляются вместе позже.Вы можете увидеть операцию добавления в методе Media.TransferBehavior::_prepare()
и в методе Media.GeneratorBehavior::make()
.Вам нужно будет либо расширить плагин и продублировать эти методы (с изменениями) в коде приложения, либо взломать эти две строки напрямую, чтобы получить желаемый результат!