Передача PropertySet в шаблоны Smarty

Предлагаю для большего удобства в использовании modxSmarty добавить в функции расширений processor, chunk и snippet возможность передавать в них стандартные наборы параметров. На данный момент это делается в коде: {snippet name=«Wayfinder» params=«startId=12&outerClass=myclass»} или сначала формируем массив или строку в JSON и передаем в функцию. Но ведь в MODX есть прекрасный механизм наборов параметров с удобным интерфейсом в админке. Ведь удобнее было бы написать так: {snippet name=«Wayfinder» propset=«set1,set2,set3» params=«some_params»} где set1,set2,… — это наборы параметров PropertySet.

Для того, чтобы это добавить требуется внести некоторые изменения в функции core/components/modxsmarty/smarty_plugins/function.chunk.php core/components/modxsmarty/smarty_plugins/function.snippet.php core/components/modxsmarty/smarty_plugins/function.processor.php Во всех этих функциях нужно сразу после блока if(isset($params['params'])){ $scriptProperties = $params['params']; // Check if String if(is_string($scriptProperties)){ $scriptProperties = $modx->parser->parseProperties($scriptProperties); } } добавить блок if (isset($params['propset'])) { //есть параметр propset $p=$params['propset']; $psets=explode(" ,@",$p); //разобьем на составляющие $sp=array(); foreach($psets as $p) { $props=$modx->getObject('modPropertySet',array('name'=>$p))->getProperties(); if(is_array($props)){ $sp=$props+$sp; //наборы параметров, указанные правее в списке, более значимы } $scriptProperties+=$sp; //добавим свойства } } И мы имеем все удобства пользования наборами параметров.

Извиняюсь! Как-то пропустил топик… По поводу наборов параметров в чанках и сниппетах: как я говорил ранее, это и сейчас имеется. То есть просто вызываем {snippet name=«mysnippet@propset1@propset2@...»} или {chunk name=«mychunk@propset1@propset2@...»}. А вот в процессорах этого действительно изначально нет. То есть вообще изначально сам MODX не предусматривал вызова процессоров с наборами параметров. Буду вносить этот функционал в modxSmarty. Создал себе тикет.