Alexey Medvedev

Alexey Medvedev

С нами с 10 августа 2017; Место в рейтинге пользователей: #93
Alexey Medvedev
17 марта 2018, 17:54
1
0
Благодарю Павла за доступ к сайту для устранения проблемы.

// Обратите внимание, что прописано в параметре 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 не ставить, иначе рискуете потерять связи, так как будет переименование файла 
}
Alexey Medvedev
25 января 2018, 11:20
0
На самом деле оригинальный компонент не обновлялся уже очень давно — 6 лет.

Даже форк компонента последний раз обновлялся 2-3 года назад.
Alexey Medvedev
25 января 2018, 10:52
0
не работает в чанке fenom синтаксис.
Я ответил, как он работает. Частично поддерживает fenom при определенных условия. В чанке он работает при вызове SimpleSearch в синтаксисе smarty
Alexey Medvedev
25 января 2018, 10:06
1
0
{'!SimpleSearchForm' | snippet : [
    'tpl' => 'search.form',
    'searchIndex' => 'test'
]}
[[!SimpleSearch? &searchIndex=`test`]]
Вот так всё прекрасно работает.

{'!SimpleSearch' | snippet : ['searchIndex' => 'test']}
Работает поиск, но не работает Fenom в чанке 'search.form'.
Alexey Medvedev
15 января 2018, 13:09
0
В FastUploads стоит в плагине переименование файла. Если Вы отключите переименование файла в настройках компонента. Проблем быть не должно.
Alexey Medvedev
09 января 2018, 02:47
0
Дмитрий, Вы решили проблему? Если нет, то свяжитесь со мной через профиль.
Alexey Medvedev
09 января 2018, 02:45
0
Приношу извинения за ожидания.
Дмитрий, интеграция с ms2Gallery стоит в списке задач. Пока по срокам с ориентировать не могу. Конец года был очень напряженным и сытным на работу. До 29 января у меня всё расписано, к сожалению. Если появится свободное время, то постараюсь реализовать эту функцию. Компонент ms2Gallery является проприетарным(платным) попрошу у Василия часть кода загрузки изображений или хотя бы описание его работы.
Alexey Medvedev
24 декабря 2017, 20:54
0
Два выхода из ситуации:
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']);
Alexey Medvedev
24 декабря 2017, 20:43
0
Должно работать, попробуйте загрузить фотографию и просмотрите изменился ли размер.
Alexey Medvedev
12 декабря 2017, 23:01
0
Интеграцию проводил ещё в прошлой версии, если Василий ничего не менял в компоненте, то должно работать :) Попробуйте, если будут проблемы или не будет сжимать, пишите — посмотрю, что можно сделать.
Alexey Medvedev
12 декабря 2017, 21:16
0
Точно, они же работают не по получению трафика, а по отдаче. Тогда да, возможно что будет сжатие до 85-90% и стоимость будет меньше (900 рублей), но вот как рассчитать это.
Alexey Medvedev
12 декабря 2017, 21:05
+2
Скрипт для сжатия всех файлов в папке uploads/. Удобнее использовать скрипт в консоле MODX Revo.

Перед тем как использовать на всем каталоге, попробуйте на папке с небольшим количеством файлов.

Внимание! Если у Вас слабый или ограниченный сервер или канал, то возможен завершение скрипта по таймауту выполнения, установленного конфигами сервера. Тогда используйте его по папкам, а не сразу огромную папку с 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 не ставить, иначе рискуете потерять связи, так как будет переименование файла
}
Alexey Medvedev
11 декабря 2017, 22:07
0
Да, если напишите скрипт для прохода по файлам.
Alexey Medvedev
11 декабря 2017, 15:31
0
Не совсем так. Тоже прошелся по Вашей картинке и тем и другим, только у TinyPNG — сжатие -31%. OpticPic — сжал меньше за счет потери качества — визуально почти не отличается из-за низкого разрешения. Тут всё индивидуально, в некоторых случаях будет лучше opticpic, в других TinyPNG :)
Alexey Medvedev
11 декабря 2017, 15:06
0
Обновлялся до 2.6.0 — затирание не было — обновлял с помощью simpleUpdater. К сожалению, другого варианта на данный момент нет. Поэтому в настройках написано, что это экспериментальная функция.
Alexey Medvedev
11 декабря 2017, 11:49
0
Ошибка происходит при переименовании файла через source компонент. Все файлы приводятся транслитерируются и приводятся к нижнему регистру. А у Вас с правами какие-то сложности. Попробуйте загрузить тот-же файл в корень сайта.