+388.20
Рейтинг

Борисов Евгений

&noneWrapOuter=`0`
$id = isset($id) ? $id : 20;
$modx->runSnippet('DocLister', array(
	'idType' => 'parents',
	'depth' => 10,
	'parnts' => $id,
	'tvList' => 'tov_category',
	'saveDLObject' => '_DL'
));
$_DL = $modx->getPlaceholder('_DL');
$cat = array();
foreach($_DL->docsCollection() as $item){
	$cat[$item['id']] = empty($item['tv.tov_category']) ? 0 : 1;
}
ksort($cat);
foreach($cat as $key => $val){
	$cat_name = $_DL->docsCollection()->get($key);
	//Тут естественно свой шаблон и чего-то там selected
	$out = $cat_name['pagetitle'].' ('.$val.')<br />';
}
return $out;

А так еще меньше запросов. Угадайте что я сделал?)
Тут проблема не только в DL я так полагаю, а вообще в разборе параметров любых сниппетов.
Судя по ошибке — проблема где-то в новом парсере, который занимается разбором параметров. Все вопросы к разработчикам MODX
Можно еще поиграться с параметром showParent, который понимает значения -1/0/1
Потому как разработчики не реагировали на сообщения безопасности и я с этим уже свыкся. А потом меня MODX перестал интересовать так, чтобы бегать как обезьяна с гранатой и доказывать кому-то степень критичности.
TplCurrentNoChildren — шаблон текущего пункта без дочерних элементов
TplCurrent — шаблон для текущего пункта любого уровня вложенности
TplCurrent1 — шаблон текущего пункта 1 уровня вложенности
TplCurrent2 — шаблон текущего пункта для 2 уровня вложенности
TplCurrent…
Айхор — удивел очень высокой ценой за «г… конфиг».
Улыбнуло. Сам пользуюсь айхором — очень доволен. Цены демократичные. Из интереса сравнил с вашим предложением и сразу стало понятно — нужно было что-то написать, чтобы рефку воткнуть.
О боже. С каких пор MySQL стал костылем? Но если вы так авторитетно настаиваете, что addWhereList это костыль. То вот вам еще 2 костыля в копилку

$modx->runSnippet('DocLister', [
	'idType' => 'parents',
	'parents' => 1,	
	'exclude' => [21,19,17],
	'prepare' => function($data, $modx, $_DL){
		return (in_array($data['id'], $_DL->getCfgDef('exclude', []))) ? false : $data; 
	},
	'tpl' => '@CODE: [+id+]<br />'
]);

$modx->runSnippet('DocLister', [
	'idType' => 'parents',
	'parents' => 1,	
	'filters' => 'AND(content:id:notin:21,19,17)',
	'tpl' => '@CODE: [+id+]<br />'
]);
$modx->runSnippet('DocLister', [
    'display' => 5,
    'orderBy' => 'RAND()',
    'saveDLObject' => '_DL'
])
$_DL1 = $modx->getPlaceholder('_DL')->docsCollection();
Общий алгоритм вашего сниппета получается такой:
— Получение коллекции документов из вызова DocLister для родителя №1
— Получение коллекции документов из вызова DocLister для родителя №2
— Создаем цикл от 1 до 5 и на каждом шаге берем по 1 элементу из обеих коллекций
— Полученные элементы шаблонизируем и результат сохраняем
— Склеиваем все результаты шаблонизации и отдаем из сниппета.
Можно. Но нужно немного поиграться с коллекциями. Т.е. штатными параметрами так не сделать.
Про возможность внедрить modx теги и выполнить произвольный сниппет.
Наконец то поправили одну из двух многолетних баг protect.inc.php)))

Кстати, разработчики собираются обновлять информацию тут? А то дырки в других CMS считают в том числе и по компонентам, а по modx только в ядрышке? Или так и будут людей обманывать?
Спасибо.
ispmanager с 5 версии уже давно не по адресу manager располагается.
На новый проект просто архивирую и переношу директорию и все!
Перенос файлов это еще пол дела.
Когда я все это затеивал, то стремился:
— добавить максимальную совместимость для работы с git
— сделать разработку сайтов на MODX Evo комфортнее в IDE

И я очень рад, что мое решение понравилось Pathologic и он начал его активно развивать. Более того, в свете последних улучшений парсера evo, шаблонизация средствами twig актуальна как никогда.
Twig в том виде, в котором мы имеем — полностью заслуга Pathologic
JSON-LD
Откройте github.com через тор;-)