Работа phpthumbon с нестандартным путем картинки

Добрый день!
Сразу скажу для профи данное решение наверное покажется смешным, а вот кому-то уровнем ниже думаю в самый раз.

Буквально вчера столкнулся с проблемкой:
Есть TV типа "Смешанная загрузка файлов", которое содержит путь к загруженной картинке, но путь — /upload/123/image.jpg.

Картинки оказались загружены не обрезанными, поэтому я естественно сразу попытался вот так сделать:
<img class="pull-left" src="{$tvimage | phpthumbon : 'w=280&h=210&zc=0&f=jpg&q=80'}" alt="{$pagetitle}">
. Но ничего не получилось, потому что phpthumbon искал картинки в assets.
Поэтому сделал следующее..
{var $fullpath = "upload/" ~ $tvimage}
                <img class="pull-left" src="{$fullpath | phpthumbon : 'w=280&h=210&zc=0&f=jpg&q=80'}" alt="{$pagetitle}">
Тут я создал переменную fullpath, и присвоил ей модифицированный путь к картинке, состоящий из папки объединенного через оператор ~ старого значения TV.

UPD: сниппет pdoResources
Sergey Leleko
04 сентября 2017, 08:07
modx.pro
2
2 346
+3

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

Василий Наумкин
04 сентября 2017, 11:10
+5
Тут бы не помешало отметить, через какой сниппет выводится этот ТВ.

pdoResources должен сам подставлять полный путь к ТВ, если включен &prepareTVs=`1` (а он включен по умолчанию).
    Sergey Leleko
    04 сентября 2017, 12:38
    0
    Справедливое замечание!
    Сниппет как раз pdoResources. Не знаю, но у меня почему-то автоматически путь не учелся, и пришлось так поступить поэтому.
    Алексей Шумаев
    04 сентября 2017, 11:16
    +2
    Такая «проблема» может иногда возникать, встречал.
    Какой-то сниппет (не помню сейчас, какой именно) не учитывают в пути basePath источника файлов.
    Проверил: pdoResources точно учитывает )
      Василий Столейков
      04 сентября 2017, 12:23
      +1
      getResources, getProducts для шопкипера, у них политика другая — всё должно прописываться ручками в чанке, об этом автор шопкипера сам писал как-то в перепалке с Василием, когда Василий ему указывал на это отличие в pdoTools.
      Николай
      04 сентября 2017, 16:05
      0
      Кстати, раз тут уж речь зашла про это. Использую этот сниппет в своих целях, и если я кормлю ему файл из другого места отличного от сайта но на этом же сервере — не работает. Пришлось костыльнуть, в папке с сайтом создать временную папку, куда копировать файл, вызывать сниппет и удалять этот файл из временной папки…

      $options['options'] = "q=90".$imgW.$imgh.$img_zc;
                  $options['input'] =  MODX_BASE_PATH.'temps/'.$_FILES['img']['name'];
                  $pr =  $modx->runSnippet("phpThumbOn", $options);
      
                  copy(MODX_BASE_PATH.$pr, $to);
                  unlink(MODX_BASE_PATH.'temps/'.$_FILES['img']['name']);
      Может быть это как то по человеческий можно?
        Алексей Шумаев
        05 сентября 2017, 10:16
        0
        Да, выглядит не очень…

        Как вариант: хранить файлы в облаке с нужными размерами.
        Например, у меня есть 2 сайта, использующие одинаковые картинки. Соответственно, хранятся они в облаке, с нужными размерами и берутся обоими сайтами оттуда.
        Плюсы: никаких обработок картинок «на лету», не занимают места на сервере, CDN + картинки загружать можно только на одном сайте или вообще заливать через API, без MODX со сторонних источников.
        Смотреть в сторону Swift. Респект Василию, как всегда.
        Игорь Терентьев
        06 сентября 2017, 21:04
        1
        0
        Вот так вроде тоже должно работать:

        <img class="pull-left" src="{("upload/" ~ $tvimage) | phpthumbon : 'w=280&h=210&zc=0&f=jpg&q=80'}" alt="{$pagetitle}">
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          7