public function doList() { $this->onItemsReady(function ($e) { $ctr = $e['controller']; $items = $e['items']; $extra_ib_ids = (array) $ctr->getParam('extra_infoblocks', array()); $extra_ibs = fx::data('infoblock')->where('id', $extra_ib_ids, 'in')->all(); foreach ($extra_ibs as $extra_ib) { $extra_q = $extra_ib->initController()->getFinder()->where('infoblock_id', $extra_ib['id']); $extra_items = $extra_q->all(); $items->concat($extra_items); } if (!$ctr->getParam('is_fake')) { $items->unique(); } $e['items'] = fx::tree($items, 'submenu', $ctr->getParam('extra_root_ids', array())); }); return parent::doList(); }