Как вывести результаты pdoResources в формате json, но с моим tpl
Всем привет!
Вывод с параметром &return=`json` меня не совсем устраивает, так как он выводит все поля документа без возможности обработки вложенными сниппетами.
Например, у меня есть TV в формате MIGX для добавления множества фото к документу и их необходимо обработать с помощью phpthumbon, а также другие необходимы обработки внутри чанков.
Если я делаю свой шаблон с закосом под структуру json:
{
«id»: "{$id}",
«pagetitle»: "{$pagetitle}",
},
То это не работает. Выводит в таком виде, но не работает там, куда отправляется эта json-ссылка.
Что делать?
Вывод с параметром &return=`json` меня не совсем устраивает, так как он выводит все поля документа без возможности обработки вложенными сниппетами.
Например, у меня есть TV в формате MIGX для добавления множества фото к документу и их необходимо обработать с помощью phpthumbon, а также другие необходимы обработки внутри чанков.
Если я делаю свой шаблон с закосом под структуру json:
{
«id»: "{$id}",
«pagetitle»: "{$pagetitle}",
},
То это не работает. Выводит в таком виде, но не работает там, куда отправляется эта json-ссылка.
Что делать?
Комментарии: 10
[[!pdoResources?
&return=`json`
]]
Тут документация - Обработанные изображения (image)
- Имя родителя, вместо id родителя
Спасибо. Но говорю же — не помогает. Мне нужно, например, обработать все фото с помощью phpthumbon и вывести название родителя. Это можно сделать внутри чанка для pdoResources.
Попробую по-другому спросить. Как получить и вывести в json?
&return=`json`
выводит все поля ресурса, без обработок.Попробую по-другому спросить. Как получить и вывести в json?
{
"id": "7",
"pagetitle": "Студия",
"parent": "4",
"tv_photos": [
{
"MIGX_id": "1",
"title": "Room",
"image": "assets/uploads/room_2_1.webp"
},
{
"MIGX_id": "2",
"title": "Room",
"image": "assets/uploads/room_2_2.webp"
},
{
"MIGX_id": "3",
"title": "Room",
"image": "assets/uploads/room_2_3.webp"
}
},
Буду очень рад помощи.
Ну, через SELECT, задайте, какие вам поля нужны. А так не очень понятно, при чем тут phpthumbon и json. =)
Поля заданы:
Как сначала обработать фотографии с помощью? Как В это (огромная фотка)
Как получить имя родителя? А потом вывести все в формате json?
Если все обобщить, то я ищу вариант чтобы сначала обработать встроенными сниппетами все что можно (мне нужно в чанках вложенные сниппеты использовать), затем сформировать правильный json и выкатить его на страницу (ресурс).
Как такое сделать? Смотрел в сторону API Rest, но это не совсем то.
{$_modx->runSnippet('!pdoResources', [
'fastMode' => 0,
'limit' => 0,
'parents' => 2,
'depth' => 5,
'includeContent' => 1,
'tvPrefix' => 'tv_',
'includeTVs' => 'stars,room_type,room_details,basis_price,photos',
'select' => '{"modResource":"id,uri,pagetitle,content,photos"}',
'return' => 'json',
'where' => ['isfolder' => 0]
])}
Но я не могу использовать вложенные сниппеты при return=json, которые можно использовать только в чанках.Как сначала обработать фотографии с помощью? Как В это (огромная фотка)
"image": "assets/uploads/room_2_3.webp"
воткнуть это [[*thumbnailImage:phpthumbof=`w=300&h=300&zc=1`]]
?Как получить имя родителя? А потом вывести все в формате json?
Если все обобщить, то я ищу вариант чтобы сначала обработать встроенными сниппетами все что можно (мне нужно в чанках вложенные сниппеты использовать), затем сформировать правильный json и выкатить его на страницу (ресурс).
Как такое сделать? Смотрел в сторону API Rest, но это не совсем то.
При использовании return json до tpl дело не доходит.
Эти параметры между собой не совместимы.
Сниппеты обработать в tpl не получился.
Чтобы получить дополнительные данные — например родителя нужно использовать конструкции LeftJOIN и Select
Эти параметры между собой не совместимы.
Сниппеты обработать в tpl не получился.
Чтобы получить дополнительные данные — например родителя нужно использовать конструкции LeftJOIN и Select
Я пытаюсь прикрутить Vue.js на фронт, а он принимает json (мне с ним проще работать).
Пытаюсь все обработать привычным MODX Revo и его сниппетами, сформировать правильный json и скормить Vue.js а фронт с помощью axios.
Как можно сделать такой json с уже обработанными ТВ и др.?
Пытаюсь все обработать привычным MODX Revo и его сниппетами, сформировать правильный json и скормить Vue.js а фронт с помощью axios.
Как можно сделать такой json с уже обработанными ТВ и др.?
Привычным путем работы с шаблонизатором ничего хорошего не выйдет.
Нужно писать API в котором работать напрямую с PHP и отдавать как нужно сформированный JSON.
Тут можно пойти двумя путями. Либо использовать RestFull API — и путем манипулирования URL запрашивать нужную информацию, либо пробрасывать все обращения на какой то единый коннектор. который будет отдавать данные в зависимости от action и HTTP метода запроса.
Но в любом случае обработчик должен быть PHP который уже внутри может запускать что то вроде
Нужно писать API в котором работать напрямую с PHP и отдавать как нужно сформированный JSON.
Тут можно пойти двумя путями. Либо использовать RestFull API — и путем манипулирования URL запрашивать нужную информацию, либо пробрасывать все обращения на какой то единый коннектор. который будет отдавать данные в зависимости от action и HTTP метода запроса.
Но в любом случае обработчик должен быть PHP который уже внутри может запускать что то вроде
$modx->runSnippet()
{set $rows = $_modx->runSnippet('!pdoResources', [
'fastMode' => 0,
'limit' => 0,
'parents' => 2,
'depth' => 5,
'includeContent' => 1,
'tvPrefix' => 'tv_',
'includeTVs' => 'stars,room_type,room_details,basis_price,photos',
'select' => '{"modResource":"id,uri,pagetitle,content,photos"}',
'return' => 'json',
'where' => ['isfolder' => 0]
]) | fromJSON}
{foreach $rows as $row}
..
{/foreach}
Спасибо, но не работает.
Пробовал в одну строку, пробовал играться со скобками (выносил в переменные) — не работает.
Что я делаю не так?
{set $rows = $_modx->runSnippet('!pdoResources', [
'fastMode' => 0,
'limit' => 0,
'parents' => 2,
'depth' => 5,
'includeContent' => 1,
'tvPrefix' => 'tv_',
'includeTVs' => 'stars,room_type,room_details,basis_price,photos',
'select' => '{"modResource":"id,uri,pagetitle,content,photos"}',
'return' => 'json',
'where' => ['isfolder' => 0]
]) | fromJSON}
[{foreach $rows as $row}
{
"id":"{$row.id}",
"uri":"{$row.uri}",
"pagetitle":"{$row.pagetitle}",
"content":"{$row.content}"
},
{/foreach}]
Выводит подобие json'а, но Vue не принимает его и генерирует пустые объекты, без данных.Пробовал в одну строку, пробовал играться со скобками (выносил в переменные) — не работает.
Что я делаю не так?
{set $rows = $_modx->runSnippet('!pdoResources', [
'fastMode' => 0,
'limit' => 0,
'parents' => 2,
'depth' => 5,
'includeContent' => 1,
'tvPrefix' => 'tv_',
'includeTVs' => 'stars,room_type,room_details,basis_price,photos',
'select' => '{"modResource":"id,uri,pagetitle,content,photos"}',
'return' => 'json',
'where' => ['isfolder' => 0]
])}
{$rows | print}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.