Предлагаю для большего удобства в использовании 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; //добавим свойства
}
}
И мы имеем все удобства пользования наборами параметров.