А как тебе такая идея: добавляем в процессор пара
А как тебе такая идея:
добавляем в процессор параметр tpl, в который передаем имя файла шаблона
{processor action="getmenu" ns="site" propset="cities" tpl="cities/outer.tpl"}
и добавляем код в плагин function.processor.php:
function smarty_function_processor($params, & $smarty)
{
...
if ($response = $modx->runProcessor($action, $scriptProperties, $options)) {
$output = $response->getResponse();
if ($response->isError()) {
if ($response->hasFieldErrors()) {
$errors = (array) $response->getFieldErrors();
foreach ($errors as $error) {
$output['field_errors'][$error->getField()] = $error->getMessage();
}
}
} else {
+ if (isset($params['tpl']) and $tpl = $params['tpl']) {
+ $items=$ouput['object'];
+ $out=$smarty->fetch($tpl);
+ $ouput=$out;
+ } else {
$output['success'] = true;\n+ }
}
}
return !empty($assign) ? $smarty->assign($assign, $output) : $output;
}
Тогда, если есть это параметр, процессор вернет не объект, а обработанный smarty текст. Я уже у себя проверил, работает. и шаблоны поаккуратнее смотрятся, вывод меню или данных — в одну строку :)