Skip to content

Instantly share code, notes, and snippets.

@khoatran
Last active December 4, 2020 16:27
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save khoatran/62bb7b1356bf2806df6571750e96b353 to your computer and use it in GitHub Desktop.
Save khoatran/62bb7b1356bf2806df6571750e96b353 to your computer and use it in GitHub Desktop.
Customize OctoberCMS sidebar navigation for your plugin
<!-- New sidebar wrapper -->
<div style="background: steelblue;" class="layout-cell sidenav-tree"
data-control="sidenav-tree" data-search-input="#settings-search-input">
<div class="layout">
<div class="layout-row min-size">
<?= $this->makePartial('$/author/plugin-name/partials/_sidebar_menu_toolbar.htm') ?>
</div>
<div class="layout-row">
<div class="layout-cell">
<div class="layout-relative">
<div class="layout-absolute">
<div class="control-scrollbar" data-control="scrollbar">
<?= $this->makePartial('$/author/plugin-name/partials/_sidebar_menu.htm') ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Sidebar menu -->
<?php
$sideMenuItems = BackendMenu::listSideMenuItems();
if ($sideMenuItems):
$collapsedGroups = explode('|',
isset($_COOKIE['sidenav_treegroupStatus']) ? $_COOKIE['sidenav_treegroupStatus'] : null);
$categories = [];
foreach ($sideMenuItems as $sideItemCode => $item){
if(!property_exists($item, 'group'))
$item->group = 'default';
if(!property_exists($item, 'keywords'))
$item->keywords = '';
if(!property_exists($item, 'description'))
$item->description = '';
$categories[$item->group][$sideItemCode] = $item;
}
?>
<ul class="top-level">
<?php foreach ($categories as $category => $items):
$collapsed = in_array($category, $collapsedGroups);
?>
<li data-group-code="<?= e($category) ?>"
<?= $collapsed ? 'data-status="collapsed"' : null ?>
>
<div class="group">
<h3><?= e(trans($category)) ?></h3>
</div>
<ul>
<?php foreach ($items as $item): ?>
<li class="<?= BackendMenu::isSideMenuItemActive($item) ? 'active' : null ?>"
data-keywords="<?= e(trans($item->keywords)) ?>">
<a href="<?= $item->url ?>">
<i class="sidebar-menu-item <?= $item->icon ?>"></i>
<span class="header"><?= e(trans($item->label)) ?></span>
<span class="description"><?= e(trans($item->description)) ?></span>
</a>
</li>
<?php endforeach ?>
</ul>
</li>
<?php endforeach ?>
</ul>
<?php endif; ?>
<!-- Search form on top of sidebar -->
<div class="layout control-toolbar">
<div class="layout-cell">
<div class="relative toolbar-item loading-indicator-container size-input-text">
<input placeholder="<?= e(trans('system::lang.settings.search')) ?>" type="text" name="search" value=""
class="form-control icon search"
id="settings-search-input"
autocomplete="off"
data-track-input
data-load-indicator
data-load-indicator-opaque
/>
</div>
</div>
</div>
<?php namespace Author\PluginName;
use System\Classes\PluginBase;
use Backend\Facades\BackendMenu;
class Plugin extends PluginBase
{
public function register() {
BackendMenu::registerContextSidenavPartial('Author.PluginName',
'sidebar-menu',
'$/author/plugin-name/partials/_sidebar.htm');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment