А как тебе такая идея: добавляем в процессор пара

А как тебе такая идея: добавляем в процессор параметр 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 текст. Я уже у себя проверил, работает. и шаблоны поаккуратнее смотрятся, вывод меню или данных — в одну строку :)