Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 106 комментариев

Николай Артамонов
Николай Артамонов
Финальная версия.

Прошлая давала ошибку при создании нового документа. Добавил проверку есть ли id.

@EVAL

if(! empty( $modx->resource->get('id') ) )  {

$id = $modx->resource->get('id');
$parent = $modx->resource->get('parent');
$parentResource = $modx->getObject('modResource', $id);
$grandfResource = $modx->getObject('modResource', $parent);

$parentId = $parentResource->get('parent');
$grandfId = $grandfResource->get('parent');

$pg = "$grandfId,$parentId";

return $modx->runSnippet('pdoResources',array('parents' => $pg,'depth'=>0,'limit'=>0,'where'=>'{"template:=":47}','sortby'=>'pagetitle','sortdir'=>'ASC','tpl'=>'@INLINE [[#[[+parent]].pagetitle]] > [[+pagetitle]]==[[+id]]','outputSeparator'=>'||'));

}
Николай Артамонов
Николай Артамонов
Решил так:

@EVAL

$id = $modx->resource->get('id');
$parent = $modx->resource->get('parent');

$parentResource = $modx->getObject('modResource', $id);
$grandfResource = $modx->getObject('modResource', $parent);

$parentId = $parentResource->get('parent');
$grandfId = $grandfResource->get('parent');

$pg = "$grandfId,$parentId";

return $modx->runSnippet('pdoResources',array('parents' => $pg,'depth'=>0,'limit'=>0,'where'=>'{"template:=":47}','tpl'=>'@INLINE [[#[[+parent]].pagetitle]] > [[+pagetitle]]==[[+id]]','outputSeparator'=>'||'));
Вдруг кому-то понадобится.

Проблема видимо в том, что конструкции типа [[+parent]],[[#[[+parent]].parent]] обрабатываются только в шаблонах.
Павел Гвоздь
Павел Гвоздь
Постам прошлого, у которых коэф рейтинга -0.1 и ниже, за каждое добавление в избранное и за каждый положительный голос рейтинга, следовало бы повышать коэф рейтинга на +0.01 или +0.005. Возможно делать это только для определённых разделов. Это будет справедливее. Тогда заметки прошлого, которые были действительно полезны людям, не будут несправедливо уценены вместе с бесполезным «мусором».
Николай Артамонов
Николай Артамонов
Рано обрадовался. Моя конструкция почему-то выводит документы из всех уровней дерева.

--Дед
------Показать чекбоксом
----Родитель
------Документ со списком чекбоксов
------Показать чекбоксом
------Показать чекбоксом
----Родитель
------Документ со списком чекбоксов
------Показать чекбоксом
----Родитель
------Документ со списком чекбоксов
------Показать чекбоксом

В моей выборке получается, что в ресурсе где выводится список чекбоксов видны все ресурсы с шаблоном 47 изо всех родителей и деда. Хотя вроде как вот это

parents'=>'[[+parent]],[[#[[+parent]].parent]]',
должно передать id текузего родителя и деда для выборки. Depth пробовал 0. Все равно.

Что тут не так?
Николай Артамонов
Николай Артамонов
Сам отвечу на свой вопрос:

Примерно вот так через pdoResource.

@EVAL return $modx->runSnippet('pdoResources',array('parents'=>'[[+parent]],[[#[[+parent]].parent]]','depth'=>1,'limit'=>0,'where'=>'{"template:=":47}','tpl'=>'@INLINE [[#[[+parent]].pagetitle]] > [[+pagetitle]]==[[+id]]','outputSeparator'=>'||'));
В итоге получил список чекбоксов от документов с id 47 от родителя и от дедушки. В value у чекбоксов id документа.
Артур Шевченко
Артур Шевченко
Так попробуй:
@SELECT `Resource`.`pagetitle` as `pagetitle`,`Resource`.`id` as `id` FROM [[+PREFIX]]site_content as Resource 
LEFT JOIN [[+PREFIX]]site_content as Parent ON `Resource`.`parent` = `Parent`.`id`
WHERE (`Resource`.`template` = 47 AND `Resource`.`parent`= [[+parent]]) OR (`Resource`.`template` = 47 AND `Resource`.`parent`= `Parent`.`parent`)
Павел Гвоздь
Павел Гвоздь
Ничего из этого не планируется, если не будет спонсора на это. Компонент написан максимально просто с использованием метода оплаты виджетом, что требовалось заказчику.