Генерация превью в формате webp для miniShop2
С приходом поддержки webp в MODX участились вопросы о возможности генерации превью товаров miniShop2 в этом формате. По началу казалось что все должно работать из коробки, но на практике этого нет.
Причиной оказалось отсутствие расширения webp в источнике файлов MS2 и в двух системных настройках ('upload_files','upload_images').
Для ленивых написал небольшой скрипт (запускать в консоли), который поможет решить эту задачу:
Причиной оказалось отсутствие расширения 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();
Поблагодарить автора
Отправить деньги
Комментарии: 19
Можно еще вот так(если через плагины):
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;
}
Предложенный мною вариант один раз запишет данные куда нужно.
Не совсем понимаю для чего делать эти манипуляции при каждом обращении к источникам.
Тем более что уже отправлен PR и в дальнейшем эта штука будет работать из коробки
Не совсем понимаю для чего делать эти манипуляции при каждом обращении к источникам.
Тем более что уже отправлен PR и в дальнейшем эта штука будет работать из коробки
А через источники файлов разве нельзя указать это?
Это можно
$props['imageExtensions']['value'] .= ',webp';
$props['allowedFileTypes']['value'] .= ',webp';
Это нет$props['thumbnailType']['options'][] = ['text'=>'webp','value'=>'webp'];
Вот это новость
за столько лет работы с MODX это окно ни разу не видел
Век живи — век учись.
за столько лет работы с MODX это окно ни разу не видел
Век живи — век учись.
Я если честно сам только узнал об этом))))))))))))))
ребят, подскажите все выставил как надо… ошибку дает «1.webp: Файл не является корректным изображением.»
prntscr.com/mzfq6c
Куда копать?
prntscr.com/mzfq6c
Куда копать?
Не подскажу) не пробовал
проверил у себя, получается что пока по непонятным причинам картинки из webp не получается конвертировать. Но такой ошибки не наблюдаю, вероятно у тебя проблема с самой картинкой
последний modx, и последний minishop2 при загрузке webp изображения в карточку товара говорит неправильный файл, а при перегенерации из jpg вообще убивает файлы. Что я делаю не так?)
А никто не знает, почему phpthumbon webp генерирует иногда просто пустым изображением?
Попробовал в каталоге запустить половина изображений нормально, о половина просто пустое фото.
В настройках указал только ширину, высоту и f=webp.
Ни у кого такого не было?
Попробовал в каталоге запустить половина изображений нормально, о половина просто пустое фото.
В настройках указал только ширину, высоту и f=webp.
Ни у кого такого не было?
А что на счет скорости генерации превью, webp быстрее генерируется?
А он точно генерирует в webp, а не в jpg?
Сделал всё как тут написано. Ради интереса генерировал сначала в jpg, а потом в webp один и тот же файл.
Размер одинаковый.
Может система, видя неизвестный формат, по-умолчанию в jpg генерирует и просто меняет расширение на webp?
Просто даже судя по caniuse мой IE11 и iOS7 не должны понимать webp, но они его отображают как надо!
Сделал всё как тут написано. Ради интереса генерировал сначала в jpg, а потом в webp один и тот же файл.
Размер одинаковый.
Может система, видя неизвестный формат, по-умолчанию в jpg генерирует и просто меняет расширение на webp?
Просто даже судя по caniuse мой IE11 и iOS7 не должны понимать webp, но они его отображают как надо!
Должен еще и хостинг это поддерживать.
Я на modhost.pro специально собирал ImageMagick 7 с поддержкой webp.
Я на modhost.pro специально собирал ImageMagick 7 с поддержкой webp.
Действительно.
array(12) {
["GD Version"]=> string(26) "bundled (2.1.0 compatible)"
["FreeType Support"]=> bool(true)
["FreeType Linkage"]=> string(13) "with freetype"
["GIF Read Support"]=> bool(true)
["GIF Create Support"]=> bool(true)
["JPEG Support"]=> bool(true)
["PNG Support"]=> bool(true)
["WBMP Support"]=> bool(true)
["XPM Support"]=> bool(true)
["XBM Support"]=> bool(true)
["WebP Support"]=> bool(false)
["JIS-mapped Japanese Font Support"]=> bool(false)
}
на сервере присутствует поддержка webp в модуле GD, но почему-то фотки не генерируются в этот формат, папка пустая получается на хостинге. Подскажите как наладить?
Подскажите плз, почему у мня превью в каталоге не видно в свежесозданном сайте на новых версиях минишопа и модх.
сами превьюшки 100% генерируются и в jpg и в web, при загрузке картинки в галерею товара?
они появляются в assets/images/products и в источнике файлов MS2Images
в tpl.msProducts.row этот $thumb не видит, показывает дефолтные small…
сами превьюшки 100% генерируются и в jpg и в web, при загрузке картинки в галерею товара?
они появляются в assets/images/products и в источнике файлов MS2Images
в tpl.msProducts.row этот $thumb не видит, показывает дефолтные small…
<a href="{$id | url}">
{if $thumb?}
<img src="{$thumb}" alt="{$pagetitle}" title="{$pagetitle}" itemprop="image"/>
{else}
<img src="{'assets_url' | option}components/minishop2/img/web/ms2_small.png"
srcset="{'assets_url' | option}components/minishop2/img/web/ms2_small@2x.png 2x"
class="mw-100" alt="{$pagetitle}" title="{$pagetitle}"/>
{/if}
</a>
Тег [[++url]] ссылку на главную страницу, поэтому заменил на {$id | url}<a href="[[++url]]">
{if $thumb?}
<img src="{$thumb}" class="mw-100" alt="{$pagetitle}" title="{$pagetitle}" itemprop="image"/>
{else}
<img src="{'assets_url' | option}components/minishop2/img/web/ms2_small.png"
srcset="{'assets_url' | option}components/minishop2/img/web/ms2_small@2x.png 2x"
class="mw-100" alt="{$pagetitle}" title="{$pagetitle}"/>
{/if}
</a>
Разобрался отменно в настройках, и частично решил мой вопросе.
в шаблоне категорий не было &includeThumbs=`120x90`,
и в чанке убрал {if $thumb?} и {else}…
оставил только это. Теперь работает.
в шаблоне категорий не было &includeThumbs=`120x90`,
и в чанке убрал {if $thumb?} и {else}…
оставил только это. Теперь работает.
<img src="[[+120x90]]" class="mw-100" alt="{$pagetitle}" title="{$pagetitle}" itemprop="image"/>
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.