Процессор для breadcrumbs

Давно подумывал о замене стандартных компонентов breadcrumbs, процессоры MODX привлекают меня гораздо больше, да и когда работаешь в одном окружении (smarty), необходимость переключаться на другой синтаксис слегка нервирует. И вот это случилось. Представляю на ваш суд процессор для вывода цепочки родителей.

Процессор breadcrumbs.class.php я кинул в папку (modxsite)site/web <?php

class modSiteWebBreadcrumbsProcessor extends modProcessor{

public function initialize(){
	$this->setDefaultProperties(array(
		'startId'       => 0,
		'excludeDocs'   => array(),
		'showHidden'    => true,
		'showUnpub'     => false,
		'showDeleted'   => false
	));
	return parent::initialize();
}

public function process() {
	$bc_path = array();
	$resource = $this->modx->resource;

	//стоим в голове, нечего выводить
	if($resource->get('id')==$this->getProperty('startId')){
		return array(
			'success'   => true,
			'message'   => '',
			'object'    => array()
		);
	}

	//соберем цепочку родителей
	$r=$resource->toArray();
	unset($r['content']);
	$bc_path[]=$r;

    while($resource = $resource->getOne('Parent')) {
	    if (in_array($resource->id, $this->getProperty('excludeDocs'))
		    || !$this->getProperty('showHidden') && $resource->hidemenu
		    || !$this->getProperty('showUnpub') && !$resource->published
		    || !$this->getProperty('showDeleted') && $resource->deleted
	    ){
		    continue;
		}

	    $r=$resource->toArray();
	    unset($r['content']);
	    array_unshift($bc_path,$r);

	    if($resource->id==$this->getProperty('startId'))
			break;
	}
	return array(
		'success'   => true,
		'message'   => '',
		'object'    => $bc_path,
	);
}

} return 'modSiteWebBreadcrumbsProcessor'; для вывода использовал шаблон {$params=['startId'=>37]} {* это голова нужной ветки *} {processor action='site/web/breadcrumbs' ns=modxsite params=$params assign=result}

Буду благодарен любым советам по доработке.