Александр Марков
30 июля 2013 г., 16:32

Передача 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. Создал себе тикет.

Добавить комментарий