© Сделано на LiveStreet
Дизайн - ©2009 MODx RED Group
<?
$modx->setPlaceholder($name,$value);
?>
preg_match_all('~\[(\+|\*|\()([^:\+\[\]]+)([^\[\]]*?)((\1|\))\]~s', $template, $matches);
if ($matches[0]) {
$template = str_replace($matches[0], '', $template);
$this->Log("Cleaning unsolved tags: \n" . implode("\n",$matches[2]) );
}
<?
// Преобразует все не стандартные переменные внутри вызова Ditto в плейсхолдеры для подстановки в чанк
$std_var=array('config','dateFormat','dateSource','debug','depth','display','ditto_base','documents','extenders','filter',
'format','globalFilterDelimiter','hiddenFields','hideFolders','id','keywords','language','localFilterDelimiter',
'noResults','paginate','paginateAlwaysShowLinks','parents','phx','queryLimit','removeChunk','save','seeThruUnpub',
'showInMenuOnly','showPublishedOnly','sortBy','sortDir','start','startID','total','tpl','tplAlt','tplCurrentDocument','tplFirst',
'tplLast','tplPaginateNext','tplPaginatePrevious','tplTrunc','trunc','truncAt','truncLen','truncOffset','truncText','where' );
foreach($modx->event->params as $name=>$value)
{
if (!in_array($name,$std_var)) {
$func=create_function($resource,"{ return '".addslashes($value)."'; }");
$placeholders[$name]=array("","$func");
}
}
?><?
// Новый плейсхолдер для перемещения данных из вызова Ditto в вызов других сниппетов шаблона $tpl
$func=create_function($resource,"{ return '$docs'; }");
$placeholders['parent_documents']=array("","$func");
?>