/** * Generate an list of items that will be loaded into the custom menu * * @param $menu template slug for retriving a menu * @return ArrayList */ public function CustomMenu($menu = "") { $menu_items = new ArrayList(); if (isset($menu)) { // Ensure argument is safe for database $menu = Convert::raw2sql($menu); $filter = array('Slug' => $menu); if ($menu = CustomMenuHolder::get()->filter($filter)->first()) { // If a custom order is set, use it if ($menu->Order) { $order = explode(',', $menu->Order); } if (isset($order) && is_array($order) && count($order) > 0) { foreach ($order as $item) { $menu_items->push($menu->Pages()->find('ID', $item)); } } else { foreach ($menu->Pages() as $item) { $menu_items->push($item); } } } } return $menu_items; }
/** * Create default menu items if no items exist * * @see sapphire/core/model/DataObject#requireDefaultRecords() */ function requireDefaultRecords() { parent::requireDefaultRecords(); // Main Menu if ($this->class == 'CustomMenuHolder') { if (!DataObject::get_one($this->class)) { $menu = new CustomMenuHolder(); $menu->Title = 'Main Menu'; $menu->Slug = "main-menu"; $menu->write(); $menu->flushCache(); if (method_exists('Database', 'alteration_message')) { Database::alteration_message("Main menu created", "created"); } else { DB::alteration_message("Main menu created", "created"); } $menu = new CustomMenuHolder(); $menu->Title = 'Header Menu'; $menu->Slug = "header-menu"; $menu->write(); $menu->flushCache(); if (method_exists('Database', 'alteration_message')) { Database::alteration_message("Header menu created", "created"); } else { DB::alteration_message("Header menu created", "created"); } $menu = new CustomMenuHolder(); $menu->Title = 'Footer Menu'; $menu->Slug = "footer-menu"; $menu->write(); $menu->flushCache(); if (method_exists('Database', 'alteration_message')) { Database::alteration_message("Footer menu created", "created"); } else { DB::alteration_message("Footer menu created", "created"); } } } }
<?php // Enable Subsite Support if needed if (class_exists('Subsite')) { CustomMenuHolder::add_extension('CustomMenuHolder_SubsiteExtension'); CustomMenuAdmin::add_extension('SubsiteMenuExtension'); }