Внешний источник файлов для галереи minishop

Есть необходимость хранить фото товаров во внешней галерее (на яндекс-диске).
Насколько сложно подружить галерею минишопа с Яндекс-диском?
Как понимаю, надо создать новый источник, с помощью компонента WebDAV, подрубить его к нужному яндекс-диску, добавить к источнику параметры thumbnails, maxUploadWidth, и т.д.
Этого будет достаточно? Или придётся покодить?

И второй вопрос. Надо будет добавлять фото к товарам через API с внешнего источника. Описанный здесь код:
$response = $modx->runProcessor('gallery/upload', array(
'file' => MODX_BASE_PATH. 'test.png',
'id' => 9
),
array('processors_path' => MODX_CORE_PATH.'components/minishop2/processors/mgr/')
);
Будет рабочим при простой замене 'file' => MODX_BASE_PATH. 'test.png', на 'file' => 'УРЛ к исходному файлу на ЯДиске'

?
Вячеслав
26 марта 2015, 08:28
modx.pro
2 780
0

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

Василий Наумкин
26 марта 2015, 11:53
0
Теоретически, нужно только создать источник файлов, и указать его товару для использования — дальше всё должно работать само.

Добавлять фото нужно штатно, а источник сам уже их выгрузит на Яндекс. Для того источники и придумали, чтобы не париться с работой удалённых сервисов.
    Вячеслав
    26 марта 2015, 12:17
    0
    Спасибо за ответ!
    Работа через API нужна, так как делаю импорт товаров в каталог из экселевской таблицы.
    Требуется регулярно добавлять порядка тысячи наименований — фото указываются в виде ссылок на изображения. И вручную перетаскивать такое количество фоток неприемлемо.
      serbeh
      03 ноября 2016, 09:23
      0
      Здравствуйте! Подскажите, пожалуйста, как можно было бы массово поменять источник файлов для изображений? Через БД? Как установить другой источник файлов по-умолчанию? И можно ли просто перенести уже существующие изображения(в MS2 Images) в новый источник файлов (S3)?
      Василий Наумкин
      26 марта 2015, 12:24
      0
      В общем проверил — нифига не выйдет.

      Яндекс же не позволяет показывать картинки по прямой ссылке. Нужно использовать что-то типа Amazon S3.
        Вячеслав
        26 марта 2015, 14:59
        0
        В итоге, допустим, есть прямая ссылка на изображение, которое надо добавить в галерею товара.
        Просто указав ссылку на него в качестве параметра file процессору
        $response = $modx->runProcessor('gallery/upload', array(
        'file' => MODX_BASE_PATH. 'test.png',
        'id' => 9
        ),
        array('processors_path' => MODX_CORE_PATH.'components/minishop2/processors/mgr/')
        );
        Можно это сделать? Или придётся отдельно закачивать файл на сайт, и потом натравливать процессор на закаченный файл?
          Василий Наумкин
          26 марта 2015, 16:32
          0
          Родной процессор работает только с локальными файлами.

          Можно написать свой процессор, который будет выкачивать удалённые.
        Ганин Роман
        26 марта 2015, 13:11
        0
        Решение, конечно, костыльное, но можно обернуть хэш-ссылку Я.Диска на изображение в некешируемый сниппет (или кешируемый на полчаса), который по curl будет генерировать прямой линк (пример взят отсюда):

        <?php
          $curl = curl_init('https://yadi.sk/i/sYFk9RnOWQgrJ'); //расшаренная ссылка на картинку
          curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
          $result = curl_exec($curl);
        	        
          @preg_match('#<img class="content__image" src="(.*?)"#si', $result, $matches);
          echo ($matches[1]);    
        ?>
          Василий Наумкин
          26 марта 2015, 13:44
          0
          А теперь представь себе скорость вывода каталога товаров с такими картинками. Вместо отдачи статики веб-сервером, удалённые запросы через php на Яндекс.

          Можно, конечно, всё кэшировать у себя на сайте — но зачем тогда вообще нужен удалённый сервис?

          Так что тут только хороший платный статический хостинг, никаких Яндекс.Дисков и Google.Drive.
            Ганин Роман
            26 марта 2015, 14:13
            0
            > Можно, конечно, всё кэшировать у себя на сайте — но зачем тогда вообще нужен удалённый сервис?
            Согласен, потому что понимаю это. Но раз человеку надо… Я поэтому и написал, что предложение костыльное. Но, может, человеку «поиграться» надо перед принятием решения?
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          9