[РЕШЕНО] msFavorites.ids | snippet (модуль msFavorite) ограничение в 10 элементов
Всем Доброго времени суток.
Столкнулся с проблемой снипета {'!msFavorites.ids' | snippet}
Как исправить?
Решение.
Столкнулся с проблемой снипета {'!msFavorites.ids' | snippet}
[[!+msfavorite.total.default]] показывает 10, но на самом деле добавлено 19 элементов
Ограничен вывод в 10 элементов.[[!pdoPage:default=`
<div><strong>ПУСТО</strong></div>
`?
&parents=`0`
&resources=`{'!msFavorites.ids' | snippet}`
&element=`msProducts`
&sortby=``
&totalVar=`total`
&tpl=`tpl.msProducts.tovarFavorite`
]]
</div>
[[!+page.nav]]
Как исправить?
Решение.
{set $idss = $_modx->runSnippet('!msFavorites.ids', [ 'limit' => '9999' ]) }
{'!pdoPage' | snippet : [
'parents' => '0',
'element' => 'msProducts',
'resources' => $idss,
'sortby' => '',
'totalVar' => 'total',
'ajaxMode' => 'button',
]}
Комментарии: 5
1. Вызов
2. У pdoPage есть параметры: docs.modx.pro/komponentyi/pdotools/snippetyi/pdopage Один из них — &limit по умолчанию limit и там указано 10. Попробуйте указать там 99.
{'!msFavorites.ids' | snippet}
— сколько idшников выдает? тоже 10 штук или больше?2. У pdoPage есть параметры: docs.modx.pro/komponentyi/pdotools/snippetyi/pdopage Один из них — &limit по умолчанию limit и там указано 10. Попробуйте указать там 99.
1. выдает ровно 10 id [32,46,55,64,73,84,95,105,114,120]
2. pdoPage &limit=`999` ставлю но без изминений,
так как в resources передаю id
2. pdoPage &limit=`999` ставлю но без изминений,
так как в resources передаю id
&resources=`{'!msFavorites.ids' | snippet}`
что равно
&resources=`32,46,55,64,73,84,95,105,114,120`
msFavorites.ids — тоже наследует общие параметры от pdoTools.
Попробуйте прописать:
Попробуйте прописать:
[[!msFavorites.ids?
&limit=`99`
]]
Спасибо!
msFavorites.ids
<?php
/** @var array $scriptProperties */
/** @var msFavorites $msFavorites */
if (!$msFavorites = $modx->getService('msfavorites.msFavorites', '', MODX_CORE_PATH . 'components/msfavorites/model/')) {
return 'Could not load msFavorites class!';
}
/** @var pdoFetch $pdoFetch */
if (!$modx->loadClass('pdofetch', MODX_CORE_PATH . 'components/pdotools/model/pdotools/', false, true)) {
return false;
}
if (!empty($returnIds)) {
$return = 'ids';
}
if ($return === 'ids') {
$returnIds = 1;
}
if (!isset($list) OR $list == '') {
$list = 'default';
}
if (!isset($type) OR $type == '') {
$type = 'resource';
}
$list = is_array($list) ? $list : array_map('trim', explode(',', $list));
$rows = $modx->runSnippet('msFavorites.objects', array_merge($scriptProperties, ['return' => 'data', 'list' => $list, 'type' => $type, 'groupKey' => 'list']));
$pls = [
'list' => [],
'total' => [],
];
foreach ($list as $l) {
$keys = !empty($rows[$l]) ? array_column($rows[$l], 'key') : [];
$pls['list'][$l] = !empty($keys) ? implode(',', $keys) : '-0';
$pls['total'][$l] = count($keys);
}
$msFavorites->setPlaceholders($pls);
$log = '';
if ($modx->user->hasSessionContext('mgr') && !empty($showLog)) {
$log .= '<pre class="msFavoritesLog">' . print_r($pdoFetch->getTime(), 1) . '</pre>';
}
$modx->setPlaceholder('msFavorites.log', $log);
$output = [];
switch ($return) {
case 'data':
$output = $pls;
break;
case 'json':
$output = json_encode($pls, true);
break;
case 'ids':
default:
$output = reset($pls['list']);
if (!empty($toPlaceholder)) {
$modx->setPlaceholder($toPlaceholder, $output);
$output = '';
}
break;
}
return $output;
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.