Загрузка изображения в TV через TicketForm / Фронт
Всех с наступающим Днём Мужчины!
Крайне признателен за создание и постоянное обновление дополнения Tickets — это реальный переворот в инди-сайтостроении. Фронтэнд отлично справляется с для создания текстовых полей, но вот вопрос с загрузкой фотки сразу в TV остается открытым.
Максимально подходящий, но до конца не реализованный способ описан здесь modx.pro/help/1188/, но мне не хватает php скилс, чтобы до конца его реализовать.
Парни, давайте сделаем подарок сообществу и допилим этот плагин до готового решения:
В чанке создания тикета tpl.Tickets.form.create добавь input с типом file и name, например, photo:
— Однако, не удается даже создать новую директорию и загрузить файл на сервак, а ведь еще нужно добавить ссылку в TV *photo.
Автор поста ушел в подполье (последнее сообщение от него было в 2013) и на вопросы не отвечает, а что-то мне подсказывает, что до победы оставалось всего пару штрихов…
Крайне признателен за создание и постоянное обновление дополнения Tickets — это реальный переворот в инди-сайтостроении. Фронтэнд отлично справляется с для создания текстовых полей, но вот вопрос с загрузкой фотки сразу в TV остается открытым.
Максимально подходящий, но до конца не реализованный способ описан здесь modx.pro/help/1188/, но мне не хватает php скилс, чтобы до конца его реализовать.
Парни, давайте сделаем подарок сообществу и допилим этот плагин до готового решения:
В чанке создания тикета tpl.Tickets.form.create добавь input с типом file и name, например, photo:
<input type="file" name="photo">
Дальше, добавь enctype атрибут для формы в чанке .<form method="post" enctype="multipart/form-data" action="[[~[[*id]]]]">
Дальше в плагине Tickets добавляем обработку загрузки изображения:case 'OnDocFormSave':
// Указываем путь, пробовал $modx->getOption('assets_url').'path/to/dir/';
// получается со слэшем вначале: /assets/images/.
$path = 'assets/images/';
if($mode == 'new'){ // Режим создания документа
if (!empty($_FILES)) { // Проверка на пустоту массива $_FILES
@mkdir($path, 0777, true); // Создаем папку для хранения изображений, с правами 0777, третий аргумент - рекурсивное создание папок.
foreach($_FILES as $k => $v) {
$name = $v['name'];
$size = $v['size'];
$tmp = $v['tmp_name'];
$ext = pathinfo($name, PATHINFO_EXTENSION); //получаем расширение файла
$hash = md5(time().$name.$size); // новое название файла
$uploadfile = $path.$hash.$ext; // объединяем в конечный путь к файлу
if (copy($tmp, $uploadfile)) { // копируем изображения из временной папки в нужное место
$resource->set('photo', $uploadfile);
$resource->save(); // Сохраняем объект.
}
}
}
} else {
//resource update
}
Ну, а дальше, уже сам проверки на расширение, размер и т.д. добавь.— Однако, не удается даже создать новую директорию и загрузить файл на сервак, а ведь еще нужно добавить ссылку в TV *photo.
Автор поста ушел в подполье (последнее сообщение от него было в 2013) и на вопросы не отвечает, а что-то мне подсказывает, что до победы оставалось всего пару штрихов…
Комментарии: 15
У меня один глупый вопрос — нафига сохранять фото в ТВ, если Tickets отлично сохраняет его в свою таблицу?
Сори, что вопросом на вопрос, но как из этой таблицы вытащить ссылку и привязать её к созданному ресурсу? Плейсхолдер [[+thumb]] работает только веутри сниппета TicketForm
Есть сниппет TicketMeta, есть сниппет pdoResources, есть, в конце-концов API MODX, которое позволяет работать напрямую с БД.
Запихивать что-то в ТВ, когда оно отлично хранится в своей таблице — это очень странное решение.
Запихивать что-то в ТВ, когда оно отлично хранится в своей таблице — это очень странное решение.
А как через pdoResource вызвать изображение загруженное при создании тикета через фротэнд?
И будет ли вызов работать внутри сниппетов getTickets, mSearch, tagLister?
И будет ли вызов работать внутри сниппетов getTickets, mSearch, tagLister?
На счёт tagLister без понятия, а всё что основано на pdoTools — без проблем.
docs.modx.pro/components/pdotools/classes/pdofetch#Метод-addJoins
docs.modx.pro/components/pdotools/classes/pdofetch#Метод-addJoins
Ушел по ссылке, спасибо.
Извините, но я так и не понял как вывести загруженное из фронтэнда изображение на странице тикета вне поля content.
Можно пример вызова [[!pdoResources?]] для этой цели?
Можно пример вызова [[!pdoResources?]] для этой цели?
Ребята, как из кода ниже сделать вывод загруженного через TicketForm изображения ?
Все ветки обсуждений перелопачены и нигде нет короткого, но пипец важного примера, а тыкак-самотыкать я уже заколебался.
Все ветки обсуждений перелопачены и нигде нет короткого, но пипец важного примера, а тыкак-самотыкать я уже заколебался.
[[!pdoResources?
&parents=`0`
&class=`modResource`
&loadModels=`ms2gallery`
&leftJoin=`{
"Image": {
"class": "msResourceFile",
"on": "modResource.id = Image.resource_id AND Image.parent = 0"
},
"Thumb": {
"class": "msResourceFile",
"on": "Image.id = Thumb.parent AND Thumb.path LIKE '%120x90%'"
}
}`
&select=`{
"modResource": "*",
"Image": "Image.url as image",
"Thumb": "Thumb.url as thumb"
}`
&showLog=`1`
&sortby=`id`
&sortdir=`ASC`
]]
Ясно, что удаляем &parents=`0`, &class=`modResource`заменяем на &class=`TicketFile`, а дальше всё — тупик.
На странице вывод нашел здесь
Далее отправляюсь на поиски вывода изображений в списке ресурсов через phptrumb/
Отпишусь по результату — новички оценят.
<img src="[[pdoResources:default=`/path/заглушка.png`? &class=`TicketFile` &where=`{"parent":[[+id]]}` &sortby=`createdon` &sortdir=`ASC` &limit=`1` &tpl=`@INLINE [[+url]]`]]" >
P.S. — при оформлении вопросов, как указано в блоке справа, подробнее, т.е максимум ключевых слов описывайте проблему. Ответ на свой вопрос найден по запросу: «Tickets has_files», что не совсем логично…Далее отправляюсь на поиски вывода изображений в списке ресурсов через phptrumb/
Отпишусь по результату — новички оценят.
Да: ) Отпишитесь если не сложно, если решите этот вопрос. Тоже интересовал, но ответа я так и не нашел на него. Отложил до лучших времен.
Получилось с первого раза, тупо заменив параметр &input внутри вызова pthumb:
<img src="[[pthumb? &input=`[[pdoResources:default=`[[*image]]`? &class=`TicketFile` &where=`{"parent":[[+id]]}` &sortby=`createdon` &sortdir=`ASC` &limit=`1` &tpl=`@INLINE [[+url]]`]]` &options=`w=79,h=54`]]">
Рассчитывал на то, что придется создавать обрезанные превью для каждого размера фотки как описано здесь, а затем выводить их в нужных местах сайта — но оказалось всё гораздо проще. Чему я очень рад :)
Друзья, выручите! Хочу возродить эту тему, т.к. нужно научиться разные TV грузить картинки и просто файлы.
Вот это не работает:
daruse.ru/zagruzka-izobrazheniya-v-tv-dlya-tickets-v-modx-revo
Вот это не работает:
daruse.ru/zagruzka-izobrazheniya-v-tv-dlya-tickets-v-modx-revo
Сразу вопрос. Зачем фото и файлы грузить в разные ТВ?
Зачем усложнение такое?
Зачем усложнение такое?
5 фото + несколько файлов. У каждого своё назначение. Пользователю важно загрузить без ошибок эти файлы и фото на фронте по одному файлу.
Далее надо без гемора вывести каждое фото в РАЗНЫХ блоках в опубликованном тикете.
Я реализовывал тикеты с галереями, где фото все кучей — всё норм. Но сейчас нужно именно в TV.
Может у тикетс это предусмотрено, но я что-то не нашёл за неделю. Выше в комментариях вообще что-то не то.
Далее надо без гемора вывести каждое фото в РАЗНЫХ блоках в опубликованном тикете.
Я реализовывал тикеты с галереями, где фото все кучей — всё норм. Но сейчас нужно именно в TV.
Может у тикетс это предусмотрено, но я что-то не нашёл за неделю. Выше в комментариях вообще что-то не то.
Распихивание фоток в ТВ точно не предусмотрено.
Я могу лишь посоветовать как-то помечать сами файлы, что загружаются со стороны стандартной загрузки и помечать в поле description (если оно не используется) или в поле properties добавлять в json формате пометку про файл (там есть некие данные, вам просто добавить в них нужно).
Даже уже в этом варианте без TV можно будет уже вытаскивать нужные файлы. Если сможете помечать файлы, то и потом в ТВ путь к файлу спокойно сможете вставить.
Ну и еще момент, у всех файлов тикета (tickets_files) есть поле type — туда записывается ТИП файла, если у вас разделение фотки — документы, то по типу еще можно отбрасывать и выводить (Images, pdf,doc) и т.д.
Я могу лишь посоветовать как-то помечать сами файлы, что загружаются со стороны стандартной загрузки и помечать в поле description (если оно не используется) или в поле properties добавлять в json формате пометку про файл (там есть некие данные, вам просто добавить в них нужно).
Даже уже в этом варианте без TV можно будет уже вытаскивать нужные файлы. Если сможете помечать файлы, то и потом в ТВ путь к файлу спокойно сможете вставить.
Ну и еще момент, у всех файлов тикета (tickets_files) есть поле type — туда записывается ТИП файла, если у вас разделение фотки — документы, то по типу еще можно отбрасывать и выводить (Images, pdf,doc) и т.д.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.