blackseabreathe
@blackseabreathe
brackets

MODX Revo вывод общего кол-ва доп ресурсов?

Продолжаю изучать modx и pdoTools.
У меня есть:
-Отец
--Сын 1
---Внук 1
---Внук 2
---Внук 3
---Внук 4
--Сын 2
---Внук 1
---Внук 2
---Внук 3
---Внук 4
--Сын 3
---Внук 1
---Внук 2
---Внук 3
---Внук 4


Кол-во сынов и внуков со временем будет расти естественно.
Как подсчитать и вывести кол-во только внуков, используя pdoTools или другой плагин, если он не будет конфликтовать с pdoTools (я просто хз если такое возможно) или системными методами?

Сейчас вывел так для наглядности:
[[pdoMenu?
    &parents=`19`
    &level=`0`
    &tpl=`@INLINE <div class="countChildren">[[+children]]</div>`
    &countChildren=`1`
]]


В итоге получил:
<div class="countChildren">12</div>
<div class="countChildren">4</div>
<div class="countChildren">1</div>


Все правильно работает, но как их суммировать? Чтобы в итоге получилось так:
<div class="countChildren">17</div>
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
alelunegov
@alelunegov
Фрилансер. Разработка сайтов на MODX, верстка
Для одного проекта такое делал. Держите.
Создайте сниппет. Назовите его, например countGrandsons.
<?php
$id=$modx->getOption('id',$scriptProperties,0);
$c = $modx->newQuery('modResource');
$c->where(array(
  'published' => true,
  'deleted' => false,
  'isfolder' => false
));
$children = $modx->getChildIds($id);
if (count($children) > 0) {
    $c->where(array(
        'id:IN' => $children,
    ));
} else {
    $c = 0;
};
$resources = $modx->getCollection('modResource',$c);
return count($resources);

В чанках вызывайте как-то так: [[!countGrandsons? &id=`[[+id]]`]].
В параметре &id нужно указывать ID ресурса, внуков которого хотите посчитать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
himuro
@himuro
Full stack web developer
Попробуйте так:

[[pdoResources?
    &parents=`19`
    &totalVar' => 'total',
    &depth = `10`,
    &where = $where
]]


где $where - закодированный json массив с условиями, какие вы хотите указать для выборки..скажем, id шаблона, опубликован или нет и т.д.

И смотрите результат в плейсхолдере [[+total]]
Ответ написан
Ваш ответ на вопрос

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

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