NN-webmaster
@NN-webmaster
Обожаю веб

Выгрузка данных из ресурсов в JS — как правильно реализовать?

Простите, если вопрос покажется вам сумбурным. Есть сайт на MODx Revo, в котором имеется много (более тысячи) ресурсов.

Задача: выгрузить некоторые поля большинства ресурсов (а именно, pagetitle и url) в какой-нибудь удобный формат и вставить на страницу в блок с javascript-кодом, чтобы ими (этими данными) можно было потом манипулировать. В модэксе использую компонент pdoTools. Для структуры выгружаемых данных не придумал ничего лучше как использовать объект, внутри которого массив с единственным ключём objects, в котором будут храниться объекты с ключами title и url, значения которых будут, соответственно, браться из ресурсов.

Правильно ли я понимаю, что мне нужно взять сниппет pdoResources и с его помощью сделать выборку нужных ресурсов, а правильную структуру обеспечить с помощью чанка. Например,

Вызов сниппета в шаблоне (условный):
<script>
var myArray = {
  "objects": [

[[!pdoResources?
     &parents=`1`
     &limit=`0`
     &tpl=`JSONchunk`
     &tplLast=`JSONlastchunk`
]]

  ]
};
</script>


Чанк JSONchunk:
{
"title":"[[+pagetitle]]",
"url":"[[+link]]"
},


Соответственно, последний чанк отличается лишь тем, что в конце нет запятой. Думаю, можно даже запихнуть его в @INLINE (хотя, при таком подходе можно и обычный чанк так-же записать). Так вот. Нормален ли такой подход, или есть что-то более примитивное/понятное? На самом деле меня он устраивает, просто хотелось бы узнать, насколько кривой мой вариант и какие варианты решения этой задачи есть ещё?

Предполагаю, что в моём варианте в итоге должно получиться что-то вроде этого:
Результат
var myArray = {
	"objects": [
    {
      "pagetitle": "название 1",
      "url": "http://ya1.ru"
    },
    {
      "pagetitle": "название 2",
      "url": "http://ya2.ru"
    },
    {
      "pagetitle": "название 3",
      "url": "http://ya3.ru"
    }
  ]
};

  • Вопрос задан
  • 404 просмотра
Решения вопроса 1
NN-webmaster
@NN-webmaster Автор вопроса
Обожаю веб
В общем, реализовалось это именно так, как я и предполагал. Поскольку, ответов нет, то вопрос закрвываю через свой-же ответ. Если хотите узнать какие-то комментарии, задать вопросы, то напишите в комментариях, или на почту.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы