Как обернуть несколько масивов в снипете в чанк?
Я делаю вот так
Получается мы делаем двойную работу: в 1 и 2 масиве мы делаем 2 чанка, чанк открытия и чанк закрытия.
А хотелось бы сделать 1 чанка, для каждого масива и что бы в каждой чанке сразу обворачивал масив, как например в wayfander там когда меню выводим мы делаем чанк внутри него выводиться масив.
foreach ($resources1 as $k => $res1) {
$resource1 = $res1->toArray();
$output .= $modx->getChunk($tpl1,$resource1);
foreach ($resources2 as $k => $res2) {
$resource2 = $res2->toArray();
$output .= $modx->getChunk($tpl2,$resource2);
foreach ($resources3 as $k => $res3) {
$resource3 = $res3->toArray();
$output .= $modx->getChunk($tpl3,$resource3);
} $output .= $modx->getChunk($tpl4,0);
} $output .= $modx->getChunk($tpl5,0);
}
return $output;
Получается мы делаем двойную работу: в 1 и 2 масиве мы делаем 2 чанка, чанк открытия и чанк закрытия.
А хотелось бы сделать 1 чанка, для каждого масива и что бы в каждой чанке сразу обворачивал масив, как например в wayfander там когда меню выводим мы делаем чанк внутри него выводиться масив.
- [[+wf.wrapper]]
Комментарии: 5
Жесткая конструкция. Даже при небольшом количестве ресурсов тормоза будут серьёзные. Я так понимаю, что подразумевается конструкция —
Раздел
Подраздел
Ресурсы
Используйте pdoMenu.
нет там пользовательские таблицы, и каждый цикл это отдельная таблица со своими условиями, это не весь код, это только часть, там есть ещё и getcoletion с условиями. это схематично я код привел.
Для начала импортозамещайте getResources на pdoTools и используйте его методы getCollection и getChunk (он не лезет в базу за чанком при каждом вызове, а берёт его из памяти).
Получается что-то типа такого
Как-то так. Может «прям разработчики» что-нибудь допилят.
Получается что-то типа такого
foreach ($resources1 as $res1) {
$output2 = '';
foreach ($resources2 as $res2) {
$output3 = '';
foreach ($resources3 as $res3) {
$output3 .= $pdoFetch->getChunk($tpl3,$res3);
}
$res2['wrapper'] = $output3;
$output2 .= $pdoFetch->getChunk($tpl2, $res2);
}
$res1['wrapper'] = $output2;
$output .= $pdoFetch->getChunk($tpl1, $res1);
}
return $output;
}
Ну и соответственно в чанки $tpl1 и $tpl2 нужно добавить плейсхолдер [[+wrapper]] в нужное место// Чанк $tpl1
<div class="level1">
...
[[+wrapper]]
</div>
Если чанки простые, можно использовать INLINE чанки.Как-то так. Может «прям разработчики» что-нибудь допилят.
Ну спасибо дружище помог, я почти дошёл до этого)))))
Нужно прям совет разработчика кто с таким сталкивался. При разработке своего компонента.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.