Андрей

Андрей

Был в сети 19 апреля 2026, 16:01
Заказы не принимаю
спасибо, работает.
а в другом случае у меня та же выборка и та же таблица, только строки выводятся по условию. то есть чанк выглядит вот так
{if $parent | resource: 'tv_parametr' == 'да'}
<tr>
	<td>[[#[[+parent]].tv.long]]</td>
</tr>
{/if}
и соответственно в сумму попадают лишние данные. я так понимаю это условие нужно перенести в выборку, не подскажите как?
вот код выборки
[[!pdoResources?
                         &parents=`137`
                         &depth=`5`
                         &tpl=`tpl.tpl`
                         &sortby=`menuindex`
                         &sortdir=`ASC`
                         &where=`{"pagetitle":"[[*pagetitle]]"}`
                         &showUnpublished=`1`
                         &limit=`100`
                        ]]
чанк tpl.tpl содержит несколько строк аналогичных
<td>[[#[[+parent]].tv.long]]</td>
то есть у меня есть некая таблица, нужно внизу вывести строку Итого для тех столбцов, которые можно суммировать.
А как заполнить этот код, если информация, которая должна попасть в переменные содержится в выборке pdoResources?
<a href="#" class="createPdf" 
	data-name="Имя" 
	data-email="mail@mail.ru" 
	data-message="Сообщение в PDF">Создать PDF</a>
<a href="#" class="linkPdf" style="display:none;">Ссылка на PDF</a>
вычитал что нужно создать сниппет и вызывать его в чанке.
<?php
$params['parents'] = '$idp';
$params['depth'] = '1';
$params['tpl']='tpl.project';
$params['sortby']='menuindex';
$params['sortdir']='ASC';
$params['showUnpublished']='1';
$params['showHidden']='1';
$params['limit']='100';
$html = $modx->runSnippet('pdoResources', $params);
return $html;
так обработка идет, но почему-то вызов в чанке tpl.project [[+pagetitle]] дает вообще какие-то случайные ресурсы, у которых точно не один родитель.
А можно по-подробнее?
Честно говоря 2 вопроса:
1. не нашел такого события вот
тут
2. даже если найти — что дальше делать). Есть ресурс с сотней дочерних элементов и если название можно оставить таким же, это ни на что не влияет, то алиасы все нельзя оставить старые — как минимум это будет вызывать конфликт с исходным ресурсом, а хотелось бы чтобы алиас менялся, но только родителя, а дочерние тогда не будут конфликтовать.
оказался какой-то глюк. код верный.
pagetitle это 4 цифры и визуально они были идентичны, а по факту чем-то отличались, после того как я переввел цифры и сохранил ошибка пропала. кто подскажет в чем могла быть проблема и как проверить есть ли она еще? ресурсов много все руками не проверишь, но в остальных выборочно проверил — все работает.
понадобилось добавить условие для поиска (выяснилось что заголовки могут повторяться в других разделах), доработал код вот так
<?php
$q = $modx->newQuery('modResource');
$q->where(array('pagetitle' => $idsearch, 'parent=' => array('993','992','995','989','990','991','994','996','997','988')));

$resource = $modx->getObject('modResource', $q);

$iddd = $resource->uri;

return $iddd;
на 99% дает верный результат, но в нескольких случаях выдает ресурс у которого родитель не перечислен в условии. что не так?
написал такой сниппет, по идее он должен формировать двумерный массив, но он выводит пустой массив
$pdo = $modx->getService('pdoFetch');

$resources = $pdo->getCollection(
	'modResource',
	array('parents' => '4499', 'sortby' => 'createdon', 'sortdir' => 'DESC')
);
$tree = array();
foreach ($resources as $resource) {
	$cat = $resource['parent'];	
	$mc = $resource['id'];		
	$tree[$cat][$mc][] = $resource['pagetitle'];
}
return $tree;
на тот сервис у меня антивирус ругается, но да, нужно было вытянуть в одну строку
&where=`["TVtest.value = '5541' OR TVtest.value = '5172'"]`
теперь так
0.0597908: Added where condition: 0=TVtest.value = '5541' OR TVtest.value = '5172', modResource.parent
и выборка теперь дает пустой результат вместо 100%, а в дочерних документам точно есть удовлетворяющие условию.