October CMS resources and help articles

Simple and to the point. Optimized by the community.

Sort main menu items alphabetically

1
by seanthepottingshed, last modified on August 12th, 2019
/**
 * Sort Main Menu Items.
 *
 * @return void
 */
protected function sortMainMenuItems()
{
    $mainMenuItems     = collect([]);
    $navigationManager = NavigationManager::instance();
    foreach ($navigationManager->listMainMenuItems() as $mainMenuItem) {
        $mainMenuItem->labelValue = Lang::get($mainMenuItem->label);
        $mainMenuItems->push($mainMenuItem);
        $navigationManager->removeMainMenuItem($mainMenuItem->owner, $mainMenuItem->code);
    }

    $dashboardMenuItem   = $mainMenuItems->where('labelValue', 'Dashboard')->first();
    $settingsMenuItem    = $mainMenuItems->where('labelValue', 'Settings')->first();
    $sortedMainMenuItems = $mainMenuItems->reject(function ($mainMenuItem) {
        return in_array($mainMenuItem->labelValue, ['Settings', 'Dashboard']);
    })->sortBy('labelValue');

    $navigationManager->addMainMenuItem($dashboardMenuItem->owner, $dashboardMenuItem->code, (array) $dashboardMenuItem);

    foreach ($sortedMainMenuItems as $mainMenuItem) {
        $navigationManager->addMainMenuItem($mainMenuItem->owner, $mainMenuItem->code, (array) $mainMenuItem);
    }

    $navigationManager->addMainMenuItem($settingsMenuItem->owner, $settingsMenuItem->code, (array) $settingsMenuItem);
}

Discussion

0 comments

We use cookies to measure the performance of this website. Do you want to accept these cookies?