Генерация превью в формате webp для miniShop2

С приходом поддержки webp в MODX участились вопросы о возможности генерации превью товаров miniShop2 в этом формате. По началу казалось что все должно работать из коробки, но на практике этого нет.
Причиной оказалось отсутствие расширения webp в источнике файлов MS2 и в двух системных настройках ('upload_files','upload_images').

Для ленивых написал небольшой скрипт (запускать в консоли), который поможет решить эту задачу:

foreach (['upload_files','upload_images'] as $option){
    if($setting = $modx->getObject('modSystemSetting',['key'=>$option])){ 
        $extensions = explode(',',$setting->get('value'));
        if(!in_array('webp',$extensions)){
            $extensions[] = 'webp';
            $setting->set('value',implode(',',$extensions));
            $setting->save(); 
        } 
    }
}
$ms2images  = 2; // ID источника miniShop2
$source = $modx->getObject('modMediaSource',$ms2images);
$props = $source->get('properties');
$props['thumbnailType']['options'][] = ['text'=>'webp','value'=>'webp']; 
$props['imageExtensions']['value'] .= ',webp';
$props['allowedFileTypes']['value'] .= ',webp';
$source->set('properties',$props);
$source->save();
Petr Golovatyy
14 марта 2019, 06:57
11
570
+11
Поблагодарить автора Отправить деньги

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

Андрей Степаненко
14 марта 2019, 10:34
0
Можно еще вот так(если через плагины):
switch ($event->name) {
    case 'OnMediaSourceGetProperties':
        // Автоматчиски убирает наложение водяного знака на фотографию
        if (isset($scriptProperties['properties'])) {
            $properties = $this->modx->fromJSON($scriptProperties['properties']);
            if ($properties['basePath']['value'] == 'assets/images/products/') {
                $props['thumbnailType']['options'][] = ['text'=>'webp','value'=>'webp'];
                $props['imageExtensions']['value'] .= ',webp';
                $props['allowedFileTypes']['value'] .= ',webp';
                $this->modx->event->output($this->modx->toJson($props));
                return $properties;
            }

        }
        break;
}
    Petr Golovatyy
    14 марта 2019, 10:45
    0
    Предложенный мною вариант один раз запишет данные куда нужно.
    Не совсем понимаю для чего делать эти манипуляции при каждом обращении к источникам.
    Тем более что уже отправлен PR и в дальнейшем эта штука будет работать из коробки
      Андрей Степаненко
      14 марта 2019, 10:46
      0
      А через источники файлов разве нельзя указать это?
        Petr Golovatyy
        14 марта 2019, 10:47
        0
        Это можно
        $props['imageExtensions']['value'] .= ',webp';
        $props['allowedFileTypes']['value'] .= ',webp';
        Это нет
        $props['thumbnailType']['options'][] = ['text'=>'webp','value'=>'webp'];
          Андрей Степаненко
          14 марта 2019, 10:49
          +3
            Petr Golovatyy
            14 марта 2019, 10:52
            +1
            Вот это новость
            за столько лет работы с MODX это окно ни разу не видел

            Век живи — век учись.
              Андрей Степаненко
              14 марта 2019, 10:54
              +1
              Я если честно сам только узнал об этом))))))))))))))
                Эдвард Ерохин
                18 марта 2019, 14:28
                0
                ребят, подскажите все выставил как надо… ошибку дает «1.webp: Файл не является корректным изображением.»
                prntscr.com/mzfq6c
                Куда копать?
                  Андрей Степаненко
                  18 марта 2019, 14:31
                  0
                  Не подскажу) не пробовал
                  Petr Golovatyy
                  18 марта 2019, 14:51
                  0
                  проверил у себя, получается что пока по непонятным причинам картинки из webp не получается конвертировать. Но такой ошибки не наблюдаю, вероятно у тебя проблема с самой картинкой
Эдвард Ерохин
14 марта 2019, 16:07
0
последний modx, и последний minishop2 при загрузке webp изображения в карточку товара говорит неправильный файл, а при перегенерации из jpg вообще убивает файлы. Что я делаю не так?)
Максим
15 марта 2019, 23:23
0
А никто не знает, почему phpthumbon webp генерирует иногда просто пустым изображением?
Попробовал в каталоге запустить половина изображений нормально, о половина просто пустое фото.
В настройках указал только ширину, высоту и f=webp.
Ни у кого такого не было?
Андрей Степаненко
20 марта 2019, 10:43
0
А что на счет скорости генерации превью, webp быстрее генерируется?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.