Вывод конкретного multitv в дочернем ресурсе?

Здравствуйте, подскажите есть родительская страница с вложенными в нее дочерними страницами. На родительской есть заполненные поля multitv. Как их лучше вывести на дочерних страницах, т.е. уже те, которые заполнены в родительской, а не пустые, которые требуется заполнять по-новой?

11 комментариев

avatar
Как лучше я не знаю.
Сам я делаю примерно так в своем сниппете.
if(!defined('MODX_BASE_PATH')){die('What are you doing? Get out of here!');}
$docid = (isset($docid) && (int)$docid>0)? (int)$docid: $modx->documentIdentifier;

$res = '';
$doc = $modx->getDocument($docid);
$parentID = $doc['parent'];
//Тебе можно проще использовать $modx->getParent($docid);
а дальше
$res = $modx->runSnippet(
'multiTV',
array('docid'=>$parentID, ...));

А еще можно попробовать подставить [*parent*] // номер (ID) родительского документа в сам вызов multiTV
[!multiTV?
&tvName=`yourMultiTVname`
&docid=`[*parent*]`
Комментарий отредактирован 2020-02-04 05:12:57 пользователем Redduck
avatar
Т.е. в моем случае можно так:
$modx->getParent($docid);
$res = $modx->runSnippet(
'multiTV',array(
'docid'=>$parentID, ...));
Извиняюсь за нубский вопрос, а как это вывести на странице, попробовал с указанием имени сниппета, но что-то ничего не вывелось, надо чтоли как-то через переменную $res?
avatar
А зачем через runSnippet? 2.0.x?
avatar
А как можно еще? Да, evo 2.0
avatar
1) Узнать id родителя
2) Забрать fieldValue из его multitv
3) foreach стандартный

@php
$pid = $modx->getParent($modx->documentIdentifier)['id'];
$multitv = json_decode($modx->getTemplateVarOutput(array('test'),$pid)['test'],TRUE)['fieldValue'];
@endphp
<ol>
	@foreach($multitv as $row)
		<li><b>{{$row['key']}}:</b> {{$row['value']}}</li>
	@endforeach
</ol>
avatar
или вместо
$modx->getParent($modx->documentIdentifier)['id'];
$modx->documentObject['parent'];
avatar

<ol>
@foreach($multitv as $row)
<li><b>{{$row['key']}}:</b> {{$row['value']}}</li>
@endforeach</ol>

Этот участок у меня почему-то не работает?
Комментарий отредактирован 2020-02-05 03:18:51 пользователем dokreg
avatar
это работает только в шаблонах blade
avatar
Да с этим вроде кое как разобрался, только мне нужно чтобы multitv выводилось всем конфигом, а не отдельными значениями из массива, т.е. по сути в том же виде как я его вызываю на главной, неужели нельзя его как-то вывести без наворотов?
avatar
если в обычном шаблоне нужно вывести на дочерних мульти из родителя, то достаточно обычного сниппета
[[multiTV? &docid=`[*parent*]` &tvName=`имя тв`]]

вместо имя тв подставить нужный
avatar
Спасибо огромное, то что нужно, сейчас сработало, до этого Redduck так же советовал, почему-то не срабатывало, может из-за того что некэшируемый вызов
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.