Andrey

Andrey

Был в сети 03 августа 2022, 15:33
Заказы не принимаю
Скопировал ваш вызов, только parents поменял — не дублируется.
<ul class="nav">
	<li class="dropdown menu-item">
		<a class="dropdown-toggle" data-toggle="dropdown" href="index.php?id=3">test1</a>
		<ul class="nav menu1">
			<li class="dropdown">
				<a href="index.php?id=4">test2</a>
				<ul class="dropdown-menu mega-menu">
					<li class="yamm-content">
						<div class="row">
							<div class="col-md-4">
								<ul class="list-unstyled">
									<li>
										<a href="index.php?id=4">test2</a>
									</li>
								</ul>
							</div>
						</div>
					</li>
				</ul>
			</li>
		</ul>
	</li>
</ul>
Проверьте параметры сниппета pdoMenu, нет ли там лишнего.
А так?
<?php
$values = array();
$vtype = $modx->getOption('type', $scriptProperties, 123, true);
$ids = $modx->runSnippet('pdoResources', array(
	 'parents' => $parents,
	 'limit' => 0,
	 'returnIds' => 1,
	 'includeTVs' => 'certificateBuildingType',
	 'tvFilters' => 'certificateBuildingType==' . $vtype

));
$resources = explode(',', $ids);
foreach($resources as $id){
	 $resource = $modx->getObject('modResource', $id);
	 $tv = $resource->getTVValue($tvname);
	 if(is_numeric($tv)) $values[] = $tv;
}
$out = array_sum($values); 
return $out;
DEFAULT: no 'resource' property, nor 'tpl'. Returns a comma-separated list of the IDs of the most (or least) popular Resources. This can be passed to the 'resources' property of another Snippet, like getResources. To sort your getResources result set the same way as the mpResources Snippet, you'll want to do this:

```
&sortby=`FIELD(modResource.id,[[mpResources]])`
&sortdir=`ASC`
```
Здесь написано, что можно передать список ресурсов из mpResources в getResources. То есть делать через getResources.
Не совсем понял, но в modparser.class.php, в строке 541, добавить например:
$this->modx->log(xPDO::LOG_LEVEL_ERROR, "Could not find snippet with name {$tagName}. Resource ID: {$this->modx->resource->get('id')}.");
Да, регистрация ошибок могла бы быть информативней «из коробки», согласен.
Можно по условию дебажить прямо в сниппете с выводом различных данных. Что-то такое добавить в pdopage:
if (!is_int($scriptProperties['limit']) || $scriptProperties['limit'] < 1) {
    $modx->log(MODX_LOG_LEVEL_ERROR, 'Ошибка pdopage. Параметр limit содержит: [' . $scriptProperties['limit'] . ']. В ресурсе: ' . $modx->resource->get('id'));
}
В общем, можно поиграться по-всякому.
Там написано, что встречено нечисловое значение, а потом деление на ноль. Отследите значения по переменным и типам переменных: $total, $offset, $scriptProperties['limit'], например.
upd: А, это кусок кода оригинального pdoPage?) Думаю тогда стоит посмотреть, как выводите пагинацию и нет ли странного в параметрах сниппета.