Returns a menu item type information. The type information is returned as array
with the following elements:
- references - a list of the item type reference options. The options are returned in the
["key"] => "title" format for options that don't have sub-options, and in the format
["key"] => ["title"=>"Option title", "items"=>[...]] for options that have sub-options. Optional,
required only if the menu item type requires references.
- nesting - Boolean value indicating whether the item type supports nested items. Optional,
false if omitted.
- dynamicItems - Boolean value indicating whether the item type could generate new menu items.
Optional, false if omitted.
- cmsPages - a list of CMS pages (objects of the Cms\Classes\Page class), if the item type requires a CMS page reference to
resolve the item URL.
public static getMenuTypeInfo ( string $type ) : array | ||
$type | string | Specifies the menu item type |
return | array | Returns an array |
public function boot() { Event::listen('cms.router.beforeRoute', function ($url) { return Controller::instance()->initCmsPage($url); }); Event::listen('cms.page.beforeRenderPage', function ($controller, $page) { /* * Before twig renders */ $twig = $controller->getTwig(); $loader = $controller->getLoader(); Controller::instance()->injectPageTwig($page, $loader, $twig); /* * Get rendered content */ $contents = Controller::instance()->getPageContents($page); if (strlen($contents)) { return $contents; } }); Event::listen('cms.page.initComponents', function ($controller, $page) { Controller::instance()->initPageComponents($controller, $page); }); Event::listen('cms.block.render', function ($blockName, $blockContents) { $page = CmsController::getController()->getPage(); if (!isset($page->apiBag['staticPage'])) { return; } $contents = Controller::instance()->getPlaceholderContents($page, $blockName, $blockContents); if (strlen($contents)) { return $contents; } }); Event::listen('pages.menuitem.listTypes', function () { return ['static-page' => 'rainlab.pages::lang.menuitem.static_page', 'all-static-pages' => 'rainlab.pages::lang.menuitem.all_static_pages']; }); Event::listen('pages.menuitem.getTypeInfo', function ($type) { if ($type == 'url') { return []; } if ($type == 'static-page' || $type == 'all-static-pages') { return StaticPage::getMenuTypeInfo($type); } }); Event::listen('pages.menuitem.resolveItem', function ($type, $item, $url, $theme) { if ($type == 'static-page' || $type == 'all-static-pages') { return StaticPage::resolveMenuItem($item, $url, $theme); } }); Event::listen('backend.form.extendFieldsBefore', function ($formWidget) { if ($formWidget->model instanceof \Cms\Classes\Partial) { Snippet::extendPartialForm($formWidget); } }); Event::listen('cms.template.save', function ($controller, $template, $type) { Plugin::clearCache(); }); Event::listen('cms.template.processSettingsBeforeSave', function ($controller, $dataHolder) { $dataHolder->settings = Snippet::processTemplateSettingsArray($dataHolder->settings); }); Event::listen('cms.template.processSettingsAfterLoad', function ($controller, $template) { Snippet::processTemplateSettings($template); }); Event::listen('cms.template.processTwigContent', function ($template, $dataHolder) { if ($template instanceof \Cms\Classes\Layout) { $dataHolder->content = Controller::instance()->parseSyntaxFields($dataHolder->content); } }); Event::listen('backend.richeditor.listTypes', function () { return ['static-page' => 'rainlab.pages::lang.menuitem.static_page']; }); Event::listen('backend.richeditor.getTypeInfo', function ($type) { if ($type === 'static-page') { return StaticPage::getRichEditorTypeInfo($type); } }); }