[tinyCompressor] Автоматическая оптимизация и сжатие файлов
Что делает данный компонент?
Оптимизация изображения для сайта — это уменьшение объема изображения без видимой потери качества.
При загрузке файла через файловый менеджер, ТВ-поле в ресурсе файла изображения (jpg/png) и при создании превью изображения — он автоматически его оптимизирует.
Сжатие PDF-файлов — уменьшает размер загружаемых PDF-файлов через файловый менеджер, ТВ-поле.
Все работает в автоматическом режиме. Перед использованием посмотрите системные настройки компонента. По умолчанию, включено только сжатие превью. Для изображений размером менее 5MB указывать ключ к сервису TinyPNG не нужно.
Что использует?
Для оптимизации изображения используется доработанный API-компонент к сервису TinyPNG. Компонент позволяет бесплатно и без учета загружать изображения размером до 5MB. Для использования загрузки на большие размеры, придется получить ключ к API на сайте сервиса.
Для сжатия PDF-файлов используется API-компонент к сервису ILovePDF. Для использования необходимо получить ID-проекта и секретный ключ в личном кабинете сервиса.
Интеграция:
Проект на GitHub.com
Оптимизация изображения для сайта — это уменьшение объема изображения без видимой потери качества.
При загрузке файла через файловый менеджер, ТВ-поле в ресурсе файла изображения (jpg/png) и при создании превью изображения — он автоматически его оптимизирует.
Сжатие PDF-файлов — уменьшает размер загружаемых PDF-файлов через файловый менеджер, ТВ-поле.
Все работает в автоматическом режиме. Перед использованием посмотрите системные настройки компонента. По умолчанию, включено только сжатие превью. Для изображений размером менее 5MB указывать ключ к сервису TinyPNG не нужно.
Что использует?
Для оптимизации изображения используется доработанный API-компонент к сервису TinyPNG. Компонент позволяет бесплатно и без учета загружать изображения размером до 5MB. Для использования загрузки на большие размеры, придется получить ключ к API на сайте сервиса.
Для сжатия PDF-файлов используется API-компонент к сервису ILovePDF. Для использования необходимо получить ID-проекта и секретный ключ в личном кабинете сервиса.
Интеграция:
- Проведена интеграция в minishop2 (msGallery)
- Проведена интеграция в phpThumb (phpThumbOn/phpThumbOf)
- Проведена интеграция в MIGX
Проект на GitHub.com
Комментарии: 79
После загрузки, получаю Internal Server Error
Исправьте в плагине tinyCompressor.
if ( $this->modx->getOption('tinycompressor_tinypng_thumb_enable', $config,true)
наif ( $modx->getOption('tinycompressor_tinypng_thumb_enable', $config,true)
Компонент временно отключен
К сожалению, все равно выдают выше упомянутую ошибку
Кстати:
Modx 2.5.8-pl
Php 5.6
Кстати:
Modx 2.5.8-pl
Php 5.6
Вроде, всё протестировал. Теперь должно работать. Вот, что значит спешка — вместо обращения к массиву, сделал функцию :(
Теперь ошибка «У веб-сервера не хватает прав для обновления каталога.» Что это может быть, подскажите пожалуйста
Попробуйте загрузить на сервер файл с именем 1.jpg
Загрузил, все работает. И видимо понял в чем проблема была: расширение было JPG, т.е. заглавными буквами
UPD: Хотя нет, Вот такое название не прокатило: «DSC04858.jpg»
А когда переименовал, то все нормально
UPD: Хотя нет, Вот такое название не прокатило: «DSC04858.jpg»
А когда переименовал, то все нормально
Посмотрите имя файла у загруженного экземпляра, скорее всего оно dsc04858.jpg
Нет, он выдает ошибку «У веб-сервера не хватает прав для обновления каталога» а файл загружается, но без сжатия
Вот скрин
Вот скрин
Ошибка происходит при переименовании файла через source компонент. Все файлы приводятся транслитерируются и приводятся к нижнему регистру. А у Вас с правами какие-то сложности. Попробуйте загрузить тот-же файл в корень сайта.
Здравствуйте, та же ошибка и тоже изза имени. Если в имени есть символ _, то выдается ошибка «У веб-сервера не хватает прав для обновления каталога». Например test_n, однако же если символ убрать, testn, файл загрузится и сожмется. Это никак нельзя обойти? вроде ж не регистр :-(
Супер! Я правильно понимаю, что компонент нужно только установить и все будет работать? Или надо через него картинки выводить? И можно ли менять уровень оптимизации?
Всё верно, только в настройки зайдите. По умолчанию, включена оптимизация только для превью. Уровень оптимизации доступен, пока, только для pdf-файлов.
Блин, очень крутая фишка «внедриться» в процесс создания превьюшек PhpThumb'ом)
А, нет, не очень. Да, такого, события в MODX нет… Не пробовал обновлять MODX? Файл phpthumb.class.php не перезатирается?
Обновлялся до 2.6.0 — затирание не было — обновлял с помощью simpleUpdater. К сожалению, другого варианта на данный момент нет. Поэтому в настройках написано, что это экспериментальная функция.
Для старых картинок можно применить?
Да, если напишите скрипт для прохода по файлам.
Скрипт для сжатия всех файлов в папке uploads/. Удобнее использовать скрипт в консоле MODX Revo.
Перед тем как использовать на всем каталоге, попробуйте на папке с небольшим количеством файлов.
Внимание! Если у Вас слабый или ограниченный сервер или канал, то возможен завершение скрипта по таймауту выполнения, установленного конфигами сервера. Тогда используйте его по папкам, а не сразу огромную папку с 3500 файлов.
Не забудьте указать ключ к ILovePDF, если планируете сжимать PDF.
Если хотите сжать превью, то это можно сделать без этого скрипта — удалите их из папки хранения и они создадутся заново уже сжатыми.
Перед тем как использовать на всем каталоге, попробуйте на папке с небольшим количеством файлов.
Внимание! Если у Вас слабый или ограниченный сервер или канал, то возможен завершение скрипта по таймауту выполнения, установленного конфигами сервера. Тогда используйте его по папкам, а не сразу огромную папку с 3500 файлов.
Не забудьте указать ключ к ILovePDF, если планируете сжимать PDF.
Если хотите сжать превью, то это можно сделать без этого скрипта — удалите их из папки хранения и они создадутся заново уже сжатыми.
$source = $modx->getObject('sources.modMediaSource', 1);
$source->initialize();
function getFilesList($dir, $source)
{
$files = [];
$childrens = $source->getContainerList($dir);
foreach ($childrens as $container) {
if ($container['type'] == 'dir') {
$files = array_merge($files, getFilesList($container['pathRelative'], $source));
continue;
}
if ($container['type'] == 'file') {
$file_path_info = pathinfo($container['pathRelative']);
$ext = strtolower($file_path_info['extension']);
if ( in_array($ext, array('jpeg', 'jpg', 'png', 'pdf')) ) {
if (in_array($ext, array('jpeg', 'jpg', 'png'))) {
$type = 'image/jpeg';
}
if ($ext == 'pdf') {
$type = 'application/pdf';
}
$file = array(
'type' => $type,
'name' => $file_path_info['basename'],
'dir' => $file_path_info['dirname'],
'pathRelative' => $container['pathRelative'],
'error' => 0
);
$files[] = $file;
}
}
}
return $files;
}
$allFiles = getFilesList('uploads/', $source); // Укажите папку вместо 'uploads/'
$tinyCompressorDefaultPath = MODX_CORE_PATH . 'components/tinycompressor/model/tinycompressor/';
$compressor = $modx->getService('tinycompressor', 'tinyCompressor', $tinyCompressorDefaultPath);
foreach ($allFiles as $file) {
/**
* function compression($objects, $container, $source = null)
* @var modMediaSource $source
* @var array $objects
* @var string $container
**/
$compressor->compression($file, $file['dir']); //source не ставить, иначе рискуете потерять связи, так как будет переименование файла
}
Запускаю из консоли, в папке 1 файл…
[2018-01-04 23:38:33] (DEBUG @ .../core/model/modx/modlexicon.class.php : 417)
Language string not found: "file_download"
[2018-01-04 23:38:33] (DEBUG @ .../core/model/modx/modlexicon.class.php : 417)
Language string not found: "file_remove"
[2018-01-04 23:38:33] (WARN @ .../core/xpdo/xpdo.class.php : 543)
Could not load package metadata for package tinycompressor.
[2018-01-04 23:38:33] (ERROR @ .../core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php : 98)
PHP warning: Illegal string offset 'name'
[2018-01-04 23:38:33] (ERROR @ .../core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php : 100)
PHP warning: Illegal string offset 'error'
[2018-01-04 23:38:33] (ERROR @ .../core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php : 105)
PHP warning: Illegal string offset 'type'
...
Дмитрий, Вы решили проблему? Если нет, то свяжитесь со мной через профиль.
Здравствуйте, так же в ошибках, а так же
2018-02-03 03:20:45] (WARN @ /core/xpdo/xpdo.class.php : 543)
Could not load package metadata for package tinycompressor.
Warning: Illegal string offset 'name' in /core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php on line 98
Warning: Illegal string offset 'error' in /core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php on line 100
Warning: Illegal string offset 'type' in /core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php on line 105
Благодарю Павла за доступ к сайту для устранения проблемы.
// Обратите внимание, что прописано в параметре basePath источника файла
$source = $modx->getObject('sources.modMediaSource', 1);
$source->initialize();
function getFilesList($dir, $source)
{
$files = [];
$childrens = $source->getContainerList($dir);
foreach ($childrens as $container) {
if ($container['type'] == 'dir') {
$files = array_merge($files, getFilesList($container['pathRelative'], $source));
continue;
}
if ($container['type'] == 'file') {
$file_path_info = pathinfo($container['pathRelative']);
$ext = strtolower($file_path_info['extension']);
if ( in_array($ext, array('jpeg', 'jpg', 'png', 'pdf')) ) {
if (in_array($ext, array('jpeg', 'jpg', 'png'))) {
$type = 'image/jpeg';
}
if ($ext == 'pdf') {
$type = 'application/pdf';
}
$file = array(
'type' => $type,
'name' => $file_path_info['basename'],
'dir' => $file_path_info['dirname'],
'pathRelative' => $container['pathRelative'],
'error' => 0
);
$files[] = $file;
}
}
}
return $files;
}
$allFiles = getFilesList('uploads/', $source); // Укажите папку вместо 'uploads/'
$tinyCompressorDefaultPath = MODX_CORE_PATH . 'components/tinycompressor/model/tinycompressor/';
$compressor = $modx->getService('tinycompressor', 'tinyCompressor', $tinyCompressorDefaultPath);
foreach ($allFiles as $file) {
$data = array($file); // Передавать надо массив
// Если "Источник файла" (Source) не является корнем сайта,
// то явно укажите это перед переменной $file['dir'], иначе файл не будет найден.
// Например, 'assets/' . $file['dir'] . '/'
$compressor->compression($data, $file['dir'] . '/'); //source не ставить, иначе рискуете потерять связи, так как будет переименование файла
}
Чуть выше, есть решение.
Алексей, а к ms2Gallery можно ваш чудесный компонент прикрутить? )
Интеграцию проводил ещё в прошлой версии, если Василий ничего не менял в компоненте, то должно работать :) Попробуйте, если будут проблемы или не будет сжимать, пишите — посмотрю, что можно сделать.
Вроде не работает. Вручную через сайт заметно меньше получаются фото.
Настройка tinycompressor_tinypng_upload_enable включена.
Настройка tinycompressor_tinypng_upload_enable включена.
Хорошо, буду посвободнее посмотрю.
Алексей, благодарю за отличный компонент!
Интеграция с галереей ms2Gallery была бы очень кстати. Скажите, пожалуйста, когда планируете реализовать? Готов спонсировать! Сообщите, пожалуйста, по стоимости доработки.
Интеграция с галереей ms2Gallery была бы очень кстати. Скажите, пожалуйста, когда планируете реализовать? Готов спонсировать! Сообщите, пожалуйста, по стоимости доработки.
Приношу извинения за ожидания.
Дмитрий, интеграция с ms2Gallery стоит в списке задач. Пока по срокам с ориентировать не могу. Конец года был очень напряженным и сытным на работу. До 29 января у меня всё расписано, к сожалению. Если появится свободное время, то постараюсь реализовать эту функцию. Компонент ms2Gallery является проприетарным(платным) попрошу у Василия часть кода загрузки изображений или хотя бы описание его работы.
Дмитрий, интеграция с ms2Gallery стоит в списке задач. Пока по срокам с ориентировать не могу. Конец года был очень напряженным и сытным на работу. До 29 января у меня всё расписано, к сожалению. Если появится свободное время, то постараюсь реализовать эту функцию. Компонент ms2Gallery является проприетарным(платным) попрошу у Василия часть кода загрузки изображений или хотя бы описание его работы.
Алексей, благодарю!
Есть ли возможность интегрировать компонент с Gallery?
Должно работать, попробуйте загрузить фотографию и просмотрите изменился ли размер.
Я тоже так думал… пробовал. файл загрузился того же размера.
Хорошо. Я посмотрю. Ждите обновления.
А у меня вообще не работает. Загрузка происходит вроде, но превьюшка в альбоме белая и вообще не открывается.
Полная картинка тоже.
prntscr.com/l2mb94
Полная картинка тоже.
prntscr.com/l2mb94
Fatal error: Can't use function return value in write context in /var/www/100review/data/www/make-eat.ru/core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php on line 270\
такая ошибка выходит после установке в установщике? помогите
такая ошибка выходит после установке в установщике? помогите
Два выхода из ситуации:
1. Дождитесь обновления — ошибка будет устранена.
2. Внесите изменения в указанный файл заменив строку 270
1. Дождитесь обновления — ошибка будет устранена.
2. Внесите изменения в указанный файл заменив строку 270
$this->tinyPNGClient = (empty(trim($this->config['tinyPNGApiKey'])) ) ? false : new Tinify\Client($this->config['tinyPNGApiKey']);
на$tinyPNGApiKey =trim($this->config['tinyPNGApiKey']);
$this->tinyPNGClient = ( empty($tinyPNGApiKey) ) ? false : new Tinify\Client($tinyPNGApiKey);
И строку 277$this->iLovePDF = (empty(trim($this->config['iLovePDFProjectID'])) || empty(trim($this->config['iLovePDFProjectKey'])) ) ? false : new Ilovepdf\Ilovepdf($this->config['iLovePDFProjectID'], $this->config['iLovePDFProjectKey']);
на$iLovePDFProjectID = trim($this->config['iLovePDFProjectID']);
$iLovePDFProjectKey = trim($this->config['iLovePDFProjectKey']);
$this->iLovePDF = (empty($iLovePDFProjectID) || empty($iLovePDFProjectKey) ) ? false : new Ilovepdf\Ilovepdf($this->config['iLovePDFProjectID'], $this->config['iLovePDFProjectKey']);
Спасибо за полезный компонент!
Столкнулся с такой штукой: стоит компонент FastUploadTV, в источнике файлов так:
В настройках TV так:
Так выводит ошибку – не может найти файл. Если дополнить строку ~124 tinycompressor.class.php
Либо в плагине перед ~13 строкой
Столкнулся с такой штукой: стоит компонент FastUploadTV, в источнике файлов так:
В настройках TV так:
Так выводит ошибку – не может найти файл. Если дополнить строку ~124 tinycompressor.class.php
$sourceFilePath = $basePath . $file['name'];
на такую: $sourceFilePath = $basePath . $container . $file['name'];
То всё хорошо.Либо в плагине перед ~13 строкой
$compressor->compression($files, $directory, $source);
добавить строчку (не уверен в корректности, но вроде)$directory = $source->getBases($directory)['path'] . $directory;
В FastUploads стоит в плагине переименование файла. Если Вы отключите переименование файла в настройках компонента. Проблем быть не должно.
А можно настроить степень сжатия. Просто он выдает файлы по 1,5 мб. а сам тини на сайте может сжать их до 200-400 кб
Степень сжатия изменить нельзя. Так как компонент работает в режиме эмуляции загрузки через сайт tinypng.com. Скорее всего у Вас ничего не сжимается, т.к. происходит ошибка поиска файла на сервере. Посмотрите error.log сайта.
После установки компонента перестали подгружаться фотографии в minishop. Компонент удалил, но это ничего не изменило. Даже после удаления компонента в логах ошибки:
[2018-06-24 20:37:07] (ERROR @ /www/core/xpdo/xpdo.class.php : 644) Could not load class: tinyCompressor from tinycompressor.
[2018-06-24 20:37:07] (ERROR @ /www/core/xpdo/xpdo.class.php : 1247) Problem getting service tinycompressor, instance of class tinyCompressor, from path www/core/components/tinycompressor/model/tinycompressor/
Подскажите, что можно сделать?
Поищите плагин tinyCompressor и удалите его.
Спасибо.Сначала не понял о чем Вы. Плагин удалил, помогло!
Здравствуйте. Поставил компонент, но степень сжатия файлов изображений (ms2Gallery-1.4.8 и minishop2-2.2.0) не поменялась ни на 1 байт, такое впечатление, что изображения по прежнему сжимает PhpThumb. В лог-файле ошибок нет. Можете посоветовать, как это исправить?
Здравствуйте.
1. Проверьте наличие строки в файле /core/model/phpthumb/phpthumb.class.php'
3. Включите сжатие при загрузке в настройках.
1. Проверьте наличие строки в файле /core/model/phpthumb/phpthumb.class.php'
$this->modx->invokeEvent('OnPhpThumbRenderToFile', array('filename' => $renderfilename));
2. Очистите кэш изображений ms2Gallery.3. Включите сжатие при загрузке в настройках.
1. Наличие строки в файле проверял, она была изначально, без моего вмешательства.
3. Пробовал и со сжатием и без него (для меня важны хорошо сжатые превью, сжатие самого загружаемого файла значение не имеет).
2. Что такое кэш изображений и как его очистить — не знаю. Пробовал следующим образом: удалял конкретное фото из галареи и загружал его заново.
Сейчас пробовал из консоли запускать скрипт для перегенерации изображений ms2Gallery, выдал следующую ошибку:
3. Пробовал и со сжатием и без него (для меня важны хорошо сжатые превью, сжатие самого загружаемого файла значение не имеет).
2. Что такое кэш изображений и как его очистить — не знаю. Пробовал следующим образом: удалял конкретное фото из галареи и загружал его заново.
Сейчас пробовал из консоли запускать скрипт для перегенерации изображений ms2Gallery, выдал следующую ошибку:
/www/data/site.ru/core/model/modx/modx.class.php : 1611)
[OnFileManagerFileCreate]
[2018-06-30 23:17:42] (ERROR @ /var/www/data/site.ru/core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php : 180)
Ошибка сжатия (файл не найден): /var/www/data/site.ru//var/www/data/site.ru/assets/images/resources/10/foto.jpg
где-то путь сбивается и дважды друг на друга накладывается. До установки tinycompressor скрипт работал. Подскажите, где искать ошибку с путём?
Варианты:
1. Попробуйте не генерировать превью через скрипт, а просто загрузить страницу. Не забудьте очистить кэш превью.
2. Закомментируйте строчки 132-150 кода в файле /var/www/data/site.ru/core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php. Это строчки переименования файла.
1. Попробуйте не генерировать превью через скрипт, а просто загрузить страницу. Не забудьте очистить кэш превью.
2. Закомментируйте строчки 132-150 кода в файле /var/www/data/site.ru/core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php. Это строчки переименования файла.
Спасибо. Проблема решилась изменением кода в строке 98 файла /var/www/data/site.ru/core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php
вместо
вместо
$path = $this->modx->getOption('base_path') . $container .$file['name'];
сделал$path = $container . '/' .$file['name'];
теперь приложение заработало. Остались ещё конфликты между разными источниками картинок MS2 Images и MS2Gallery Images если в них указаны разные размеры превью, то используются только MS2Gallery Images. Буду разбираться.
Спасибо. Та же самая история была. Теперь все заработало, всему виной строка 98.
P.S.: использую ms2Gallery 2.0.6-pl
P.S.: использую ms2Gallery 2.0.6-pl
PS. Забыл приложить ссылку на скрипт
Что-то не догоняю я как он работает. Установил, в настройках указал «Да» в пункте Сжимать загружаемые изображения. Картинки как загружались, так же и загружаются с исходным размером.
Или я что-то не так сделал?
Или я что-то не так сделал?
Если размер изображения более 5 МБ, то нужен ключ для tinyPNG. Посмотрите лог modx и php на наличие ошибок.
(ERROR @ /home/s13783/www/core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php: 180) Ошибка сжатия (файл не найден): /home/s13783/www//home/s13783/www/assets/userfiles/ads/bazads/3041-6f6ebfb18532b74e69991e1ab4f9298cb3189e6f-120x90.png
При загрузке последней картинки создалась папка (304) /ads/bazads/304 в которой лежит картинка, а компрессор ищет файл в /bazads/. Если я правильно понимаю, не хватает после 304 /. Как это исправить?
При загрузке последней картинки создалась папка (304) /ads/bazads/304 в которой лежит картинка, а компрессор ищет файл в /bazads/. Если я правильно понимаю, не хватает после 304 /. Как это исправить?
Решили вопрос
У меня при загрузке в ms2Gallery картинки не загружались. Поправил следующим образом.
В файле core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php
это
PageSpeed Insights ругается, что картинки можно сжать еще. В итоге компонент мне не подходит. Буду пробовать OptiPic
В файле core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php
это
function createTinyPNG() {
require_once $this->config['modelPath'] . '/tinycompressor/lib/tinify/init_tinify.php';
$this->tinyPNGClient = (empty(trim($this->config['tinyPNGApiKey'])) ) ? false : new Tinify\Client($this->config['tinyPNGApiKey']);
$this->tinyPNGCrazyClient = new Tinify\CrazyClient();
return true;
}
function createILovePDF()
{
require_once $this->config['modelPath'] . '/tinycompressor/lib/ilovepdf/init_ilovepdf.php';
$this->iLovePDF = (empty(trim($this->config['iLovePDFProjectID'])) || empty(trim($this->config['iLovePDFProjectKey'])) ) ? false : new Ilovepdf\Ilovepdf($this->config['iLovePDFProjectID'], $this->config['iLovePDFProjectKey']);
return true;
}
заменил на этоfunction createTinyPNG() {
require_once $this->config['modelPath'] . '/tinycompressor/lib/tinify/init_tinify.php';
$t = trim($this->config['tinyPNGApiKey']);
$this->tinyPNGClient = (empty($t) ) ? false : new Tinify\Client($this->config['tinyPNGApiKey']);
$this->tinyPNGCrazyClient = new Tinify\CrazyClient();
return true;
}
function createILovePDF()
{
require_once $this->config['modelPath'] . '/tinycompressor/lib/ilovepdf/init_ilovepdf.php';
$t1 = trim($this->config['iLovePDFProjectID']);
$t2 = trim($this->config['iLovePDFProjectKey']);
$this->iLovePDF = (empty($t1) || empty($t2) ) ? false : new Ilovepdf\Ilovepdf($this->config['iLovePDFProjectID'], $this->config['iLovePDFProjectKey']);
return true;
}
Теперь работает, но сервис после phpTrumbOn картинки меньше не делает. PageSpeed Insights ругается, что картинки можно сжать еще. В итоге компонент мне не подходит. Буду пробовать OptiPic
Если вы сжимаете phpThumbOn с большой потерей качества, тут Вам ничего не поможет :)
TinyPNG — это сервис сжатия изображений без видимой потери качества.
TinyPNG — это сервис сжатия изображений без видимой потери качества.
у phpThumbOn качество по умолчанию стоит 0.9 и я его не менял. А вот OptiPic этот же файл сжал на 67%
Здравствуйте. У меня, почему-то не работает интеграция с phpthumbon — т.е. «необрезанная» картинка весит 100kb, после обрезания (соответственно она уже стала меньше по размеру) — 130kb. Никаких специальных настроек для phpthumbon.
Как такое может быть? :)
Как такое может быть? :)
В настройках посмотрите: включена ли функция сжатия превью? Если включена, то проверьте интеграцию в phpThumb — она не очень изящная, но всё же.
В файле /core/model/phpthumb/phpthumb.class.php
Найдите строку:
В файле /core/model/phpthumb/phpthumb.class.php
Найдите строку:
if (file_put_contents($renderfilename, $this->outputImageData)) {
Если нет ниже неё строки: $this->modx->invokeEvent('OnPhpThumbRenderToFile', array('filename' => $renderfilename));
Добавьте её. Очистите кэш и попробуйте.
Добрый день. Сразу к делу перейду. Хостинг beget.ru, MODX REVO версии 2.7.1.
Установил tinycompressor с функцией сжатия файлов при загрузке. Первое время все работало. Потом нужно было восстановить из бэкапа сайт.
Стал получать ошибку:
Вот скрин ошибки в админке:
Права все поменяли на директории и файлы — 775 и 664, соответственно. Ключ tinyPNGApiKey прописан в настройках. Некоторые файлы «проскакивают» и удачно сохраняются в директории оптимизированными, но у большинства — ошибка.
Пробовал установить tinycompressor на «чистой» версии. Такая же ошибка. Подскажите, пожалуйста, как можно решить эту проблему.
Установил tinycompressor с функцией сжатия файлов при загрузке. Первое время все работало. Потом нужно было восстановить из бэкапа сайт.
Стал получать ошибку:
ERROR @ .../core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php:180
Вот скрин ошибки в админке:
Права все поменяли на директории и файлы — 775 и 664, соответственно. Ключ tinyPNGApiKey прописан в настройках. Некоторые файлы «проскакивают» и удачно сохраняются в директории оптимизированными, но у большинства — ошибка.
Пробовал установить tinycompressor на «чистой» версии. Такая же ошибка. Подскажите, пожалуйста, как можно решить эту проблему.
modx.pro/components/14066#comment-93796
Уже обсуждалась эта проблема.
Закомментируйте строчки 136-150 в файле core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php
Уже обсуждалась эта проблема.
Закомментируйте строчки 136-150 в файле core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php
/* translate the name of the file */
$fat = $this->modx->getOption('friendly_alias_translit');
$friendly_alias_translit = (empty($fat) || $fat == 'none') ? false : true;
$filename = modResource::filterPathSegment($this->modx, $pathInfo['filename']); //cleanAlias(translate)
if ($friendly_alias_translit)
{
$filename = preg_replace('/[^A-Za-z0-9_-]/', '', $filename); // restrict segment toalphanumeric characters only
}
$filename = preg_replace('/-{2,}/','-',$filename); // remove double symbol "-"
$filename = trim($filename, '-'); // remove first symbol "-"
$newPath = strtolower($filename . '.' . $pathInfo['extension']);
if ($newPath !== $file['name']) {
$path = $basePath . $newPath;
$source->renameObject($oldPath, $newPath);
}
Спасибо большое, Алексей. Заработало. Странно, вроде просмотрел ответы… Как же решения не нашел?
Добрый день.
Не работает компонент с ms2Gallery в логах пишет
Пропускает /
Не работает компонент с ms2Gallery в логах пишет
[2019-06-06 16:08:26] (ERROR @ ***/components/tinycompressor/model/tinycompressor/tinycompressor.class.php : 180)
Ошибка сжатия (файл не найден): ***/assets/images/resources/26/mediumbuildings-1207824-1920.jpg
Нормальный путь должен быть таким /assets/images/resources/26/medium/ buildings-1207824-1920.jpgПропускает /
Здравствуйте.
Исходное имя файла, которое загружаете через галерею, какое?
Исходное имя файла, которое загружаете через галерею, какое?
Исходное имя файла не меняется после загрузки, в данном примере оно было buildings-1207824-1920.jpg
Я загрузит только что файл 111.jpg получил такой ответ
Я загрузит только что файл 111.jpg получил такой ответ
/core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php : 180) Ошибка сжатия (файл не найден): /assets/images/resources/26111.jpg
[2019-06-06 19:09:25] (ERROR @ /core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php : 180) Ошибка сжатия (файл не найден): /assets/images/resources/26/small111.jpg
[2019-06-06 19:09:26] (ERROR @ core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php : 180) Ошибка сжатия (файл не найден): /assets/images/resources/26/medium111.jpg
http://prntscr.com/nyham9
Добрый день. Можете провести интеграцию для бесплатной Gallery? Картинки убиваются…
И может есть возможность сделать, чтобы была быстрая возможность включения и отключения плагина, т.к. иногда сам сжимаешь в Фотошопе как надо картинки и не хотелось бы, чтобы тини ещё вмешивался…
И может есть возможность сделать, чтобы была быстрая возможность включения и отключения плагина, т.к. иногда сам сжимаешь в Фотошопе как надо картинки и не хотелось бы, чтобы тини ещё вмешивался…
Выяснил, что в логах ошибка не по этому поводу. Галерея и с этой ошибкой работает
Друзья, у меня что-то не получается, я как ни настраивал, но автоматическая настройка картинки не работает в minishop…
Если кто-то может помочь, порыться, что не так, какие мои настройки сообщить? Настройки сниппета, или?..
Если кто-то может помочь, порыться, что не так, какие мои настройки сообщить? Настройки сниппета, или?..
При загрузке изображения получаю Internal Server Error.
MODX Revolution 2.6.3-pl
Компонент последней версии 2.0.2-beta
MODX Revolution 2.6.3-pl
Компонент последней версии 2.0.2-beta
Не работает компонент почему-то с minishop2.
Проверил размер превью продукта «до» и «полсе» перегенерации превью из вкладки «галерея».
«До» было меньше (20кб), чем стало «после» (23кб). Если загрузить «после» вручную на сервис tinyPNG, то файл сжимается в 2 раза (49%).
В phpthumb.class.php нужная сточка присутствует. При перегенерации срабатывает только 1 событие из плагина: OnFileManagerFileCreate (наверное так и должно быть, но всё равно не сжимаются картинки)
Оригинал картинки был около 700 кб (т.е. меньше 5 мб).
Проверил размер превью продукта «до» и «полсе» перегенерации превью из вкладки «галерея».
«До» было меньше (20кб), чем стало «после» (23кб). Если загрузить «после» вручную на сервис tinyPNG, то файл сжимается в 2 раза (49%).
В phpthumb.class.php нужная сточка присутствует. При перегенерации срабатывает только 1 событие из плагина: OnFileManagerFileCreate (наверное так и должно быть, но всё равно не сжимаются картинки)
Оригинал картинки был около 700 кб (т.е. меньше 5 мб).
Возможно такое, компонент не обновлялся несколько лет — там уже sdk сервисов обновились и api компонентов modx. Постараюсь в ближайший месяц переписать его.
Ошибку нашел. Файл:
core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php
Строка 98.
$container уже содержит base_path.
Плюс, между $container и $file['name'] должен быть разделитель /.
После исправления, всё заработало. В личном кабинете TinyPNG появилась информация о количестве сжатых файлов.
core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php
Строка 98.
$path = $this->modx->getOption('base_path') . $container . $file['name'];
$container уже содержит base_path.
Плюс, между $container и $file['name'] должен быть разделитель /.
После исправления, всё заработало. В личном кабинете TinyPNG появилась информация о количестве сжатых файлов.
Можешь, написать как правильно должна быть написана строка 98?
Не помню уже на какой сайте делал (не посмотреть).
Но судя по моему комментарию должно быть как-то так:
Но судя по моему комментарию должно быть как-то так:
<?php
$path = $container . '/' . $file['name'];
Спасибо
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.