Правильно, только в json_decode второй параметр true надо добавить, чтобы получить в результате не объект, а массив, с ним проще работать. И вы совсем перепутали все переменные, не красиво. $extended_json = $row['extended'];

$extended = json_decode($extended_json, true);

print $extended['age']; // 31 Еще скажу, что объект modUserProfile при попытке получить поле extended ведет себя несколько иначе и возвращает не json-строку, а сразу массив. За это отвечает описание поля в его мап-файле. Если вы выполните $extended = $modx->getObject('modUser', $id)->Profile->get('extended'); , то получите сразу массив.

А это уже сами копайте, раз в такие дебри лезете :)

Во-первых, прекращаем все это обсуждать здесь, это оффтоп. Хотите что-то свое обсуждать - пишите топик. Во-вторых, через TV-шки - правильней, ИМХО. Про вероятные проблемы не буду рассуждать.

Ааа, разобрался. Внимательнее прочитал Ваш комментарий, что нужно сначала получить значение поля extended в json формате, затем декодировать его, а затем вывести уже можно. Получилось так: $json = $row['extended'];

$age = json_decode($json);

print $age->{'age'}; // 31 Правильно ли я сделал, или можно как-то сократить / оптимизировать запрос?

А можно ли вывести значение из поля extended.age? Пытаюсь так: print "". $row['extended.age']; и так: print "". $row['extended']['age']; Во втором случае выводит скобку {

Спасибо! Все заработало! А с какими проблемами я могу столкнуться? Пытаюсь сделать такую структуру: Тип услуги Услуга-1 Услуга-2 фио, который предоставляет услугу Услуга-1 фио2, который предоставляет услугу Услуга-2 То есть одна единица товара в двух категориях получается. Хотел сначала создать tv "Тип услуги" и делать по нему фильтрацию, но потом подумал, что ссылками будет логичнее и проще.

  1. Это уже оффтоп, сюда действительно не надо это писать, в следующий раз создавайте отдельный топик.
  2. То, что вы создали ресурс в виде символической ссылки, не сделало этот ресурс оригинальным, ID-шник сменился, и это не является оригинальным документом-товаром. И вообще, для того, чтобы использовать симлинки, сначала изучите метод MODx::sendForward(). Это очень коварный (и на мой взгляд очень далекий от идеалов) метод. Получая объект документа, на который ссылается эта символическая ссылка, происходит замещение полей полученного ресурса, но с некоторыми исключениями. К примеру, ID документа замещается (на текущий ID документа-ссылки), но вот контент документа, на который она ссылается, остается, и class_key, и еще некоторые поля. Таким образом у нас получается документ-гибрид, у которого class_key целевого документа, а id родной. И даже чтобы понять, что это симлинк на самом деле, а не конечный документ, нужно получить оригинальный объект документа и там уже проверить его class_key, и если это симлинк, то получить id из контента этой ссылки и подставить его в запрос товара. Смотрите изменения в шаблоне товара. В общем, это такая темная тема, что я вам советую не связываться с симлинками никогда.

Процессор нашел! А вот что там изменить, чтобы ресурсы-ссылки работали?

У меня еще один вопрос, может быть не сюда пишу. В shopModx если я создаю символическую ссылку на товар, то на странице-ссылке все рушится, не подставляются некоторые параметры. Захожу в layout.tpl карточки товара и не вижу, какой процессор отвечает за его вывод. Подскажите пожалуйста, где мне найти этот процессор и что туда подставить, чтобы ресурс-ссылка заработала. Может быть кто-то до меня уже задавал этот вопрос?