/** * Get an alphabetically sorted array of module names indexed by id that provide blocks. * * @return array */ public function getModulesContainingBlocks() { $modules = $this->extensionApi->getModulesBy(['state' => ExtensionApi::STATE_ACTIVE]); $modulesContainingBlocks = []; foreach ($modules as $module) { $blocks = $this->getAvailableBlockTypes($module); if (!empty($blocks)) { $modulesContainingBlocks[$module->getId()] = $module->getName(); } } asort($modulesContainingBlocks); return $modulesContainingBlocks; }
/** * Display one block. * * @param BlockEntity $block * @param string $positionName @deprecated argument. remove at Core-2.0 * @return string */ public function showBlock(BlockEntity $block, $positionName = '') { $blockInstance = $this->blockApi->createInstanceFromBKey($block->getBkey()); $legacy = false; $content = ''; if ($blockInstance instanceof BlockControllerInterface) { $content = $blockInstance->display($block->getContent()); } elseif ($blockInstance instanceof \Zikula_Controller_AbstractBlock) { // @todo remove at Core-2.0 $legacy = true; $args = \BlockUtil::getBlockInfo($block->getBid()); $args['position'] = $positionName; $content = $blockInstance->display($args); } if (!$legacy) { if (null !== ($moduleInstance = $this->extensionApi->getModuleInstanceOrNull($block->getModule()->getName()))) { // @todo can remove check for null at Core-2.0 // add module stylesheet to page - legacy blocks load stylesheets automatically on ModUtil::load() $moduleInstance->addStylesheet(); } } return $this->themeEngine->wrapBlockContentInTheme($content, $block->getTitle(), $block->getBlocktype(), $block->getBid(), $positionName, $legacy); }