PHPackages                             jonom/silverstripe-betternavigator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. jonom/silverstripe-betternavigator

ActiveSilverstripe-vendormodule[Utility &amp; Helpers](/categories/utility)

jonom/silverstripe-betternavigator
==================================

Front-end utility menu for Silverstripe websites featuring administration and development tools

7.1.0(2mo ago)60435.1k↓31.1%29[5 issues](https://github.com/jonom/silverstripe-betternavigator/issues)[2 PRs](https://github.com/jonom/silverstripe-betternavigator/pulls)11BSD-3-ClauseSCSSCI failing

Since Oct 26Pushed 2mo ago6 watchersCompare

[ Source](https://github.com/jonom/silverstripe-betternavigator)[ Packagist](https://packagist.org/packages/jonom/silverstripe-betternavigator)[ Fund](https://www.paypal.me/jmnz)[ GitHub Sponsors](https://github.com/jonom)[ RSS](/packages/jonom-silverstripe-betternavigator/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (10)Dependencies (2)Versions (30)Used By (11)

BetterNavigator for Silverstripe
================================

[](#betternavigator-for-silverstripe)

[![Diagram of module](images/demo.png)](images/demo.png)

This module is intended to replicate and expand upon the functionality provided by Silverstripe's built-in SilverStripeNavigator class. It provides a handy front-end menu for CMS users which offers these features:

**For Content Authors**

- Indicates to a user that they are logged in
- Indicates whether they are viewing draft or live content
- Quickly edit the page you're viewing

**For Developers**

- When in Dev Mode links are included for accessing most of Silverstripe's [URL Variable Tools](http://doc.silverstripe.org/framework/en/reference/urlvariabletools)
- Developers can access these tools on a live website by nominating themselves as a developer in the site config

Requirements
------------

[](#requirements)

Silverstripe 6.0 (5.0+, 4.0+ and 3.1+ through previous releases)

Installation
------------

[](#installation)

Add "jonom/silverstripe-betternavigator" to your composer requirements.

```
composer require jonom/silverstripe-betternavigator

```

Upgrading
---------

[](#upgrading)

- **6.0:** the namespace for this module's templates and configuration was changed in v6 to include a `JonoM` prefix. You may need to update your template directory structure and/or app configuration accordingly.

How to use
----------

[](#how-to-use)

The navigator is auto-injected into your template, and no code changes are needed.

If your website uses caching, make sure BetterNavigator's output is excluded.

### Access developer tools on a live website

[](#access-developer-tools-on-a-live-website)

You can mark certain CMS users as developers in your site's config, so they can access developer tools when logged in. Example YAML:

```
JonoM\BetterNavigator:
  developers:
    - 'dev@yoursite.com'
    - 'otherdev@yoursite.com'

```

Customisation
-------------

[](#customisation)

### Navigator display

[](#navigator-display)

You can control whether the navigator is displayed by defining a `showBetterNavigator(): bool`method in any controller with the extension applied. By default the navigator will only show on controllers that have a `dataRecord` property that is an instance of `SilverStripe\CMS\Model\SiteTree`.

```
public function showBetterNavigator()
{
    // A user-defined setting
    return $this->ShowDebugTools;
}
```

### Layout options

[](#layout-options)

BetterNavigator can be made translucent when collapsed by adding the following config setting:

```
JonoM\BetterNavigator:
  translucent: true

```

BetterNavigator's default position is 'right-top', but can be changed to 'right-bottom', 'left-top' or 'left-bottom'. Example:

```
JonoM\BetterNavigator:
  position: 'right-bottom'

```

### Template additions/overrides

[](#template-additionsoverrides)

BetterNavigator's output is controlled by templates so it can be [easily overridden](https://docs.silverstripe.org/en/5/developer_guides/templates/template_inheritance/#cascading-themes).

Some empty `` placeholders are included to let you easily add more content (new buttons for instance). Just create any of these templates in your theme or app directory and add your content:

- *templates/JonoM/BetterNavigator/Includes/* BetterNavigatorExtraContent.ss
- *templates/JonoM/BetterNavigator/Includes/* BetterNavigatorExtraDebugging.ss
- *templates/JonoM/BetterNavigator/Includes/* BetterNavigatorExtraDevTools.ss

The BetterNavigator.ss template's scope is set to the page that is being viewed, so any methods available in your page controller will be available in the BetterNavigator.ss template. This should allow you to add custom links by page type and introduce complex logic if you want to.

### CMS link target

[](#cms-link-target)

By default, the "Edit in CMS" link opens in a new tab (`target="_blank"`). You can set `cms_link_target` to a named target like `silverstripe-cms` to reuse the same CMS tab:

```
My\Namespace\PageController:
  cms_link_target: 'silverstripe-cms'
```

### Overriding the "Edit in CMS" Link

[](#overriding-the-edit-in-cms-link)

There may be occasions when you wish to override the "Edit in CMS" link. For example to point to the edit form for a displayed DataObject, rather than for the Page itself. To do so, simply add a `BetterNavigatorEditLink()` method to your page's Controller, e.g.:

```
// EventsPageController.php

/**
 * Return an alternative URL for the BetterNavigator Edit in CMS link.
 * @return string
 */
public function BetterNavigatorEditLink()
{
    $event = $this->displayedEvent();
    return $event->canEdit() ? CMSEditLinkAPI::find_edit_link_for_object($event) : false;
}
```

(This example uses [sunnysideup/cms\_edit\_link\_field](https://github.com/sunnysideup/silverstripe-cms_edit_link_field) to automatically find an edit link for a specified DataObject, but you can return any URL.)

### Overriding the permissions required for the cms edit link

[](#overriding-the-permissions-required-for-the-cms-edit-link)

By default users are required to have at least the `CMS_ACCESS_CMSMain` permission in order to see the edit link in better navigator, you can override this by setting the `better_navigator_edit_permission` configuration option on your controller to another permission code or an array of permission codes, e.g.:

```
My\Namespace\EventController:
  better_navigator_edit_permission: "CUSTOM_PERMISSION_CODE"
  better_navigator_edit_permission_mode: "any" #Optional, but can be either "any" or "all" (defaults to "all")
```

Recommended companions
----------------------

[](#recommended-companions)

### DebugBar for better debugging tools

[](#debugbar-for-better-debugging-tools)

This module provide quick access to Silverstripe's built in [URL Variable Tools](https://docs.silverstripe.org/en/developer_guides/debugging/url_variable_tools/#url-variable-tools) but reading their output isn't much fun. You can peek under Silverstripe's hood much more conveniently using lekoala's [Silverstripe DebugBar](https://github.com/lekoala/silverstripe-debugbar)

### Environment Awareness to save your sites from yourself

[](#environment-awareness-to-save-your-sites-from-yourself)

[Environment Awareness](https://github.com/jonom/silverstripe-environment-awareness) makes it obvious which environment you're in, to make it less likely that you nuke something in prod. You can display the current environment [right in the navigator](https://github.com/jonom/silverstripe-environment-awareness/blob/master/docs/en/how-to-use.md#include-front-end-environment-notice).

Maintainer contact
------------------

[](#maintainer-contact)

[Jono Menz](https://jonomenz.com)

Sponsorship
-----------

[](#sponsorship)

If you want to boost morale of the maintainer you're welcome to make a small monthly donation through [**GitHub**](https://github.com/sponsors/jonom), or a one time donation through [**PayPal**](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z5HEZREZSKA6A). ❤️ Thank you!

Please also feel free to [get in touch](https://jonomenz.com) if you want to hire the maintainer to develop a new feature, or discuss another opportunity.

###  Health Score

63

—

FairBetter than 99% of packages

Maintenance83

Actively maintained with recent releases

Popularity50

Moderate usage in the ecosystem

Community35

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 63.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~161 days

Recently: every ~286 days

Total

27

Last Release

79d ago

Major Versions

3.0.1 → 4.0.02017-11-20

3.0.2 → 4.0.12018-03-19

4.1.1 → 5.0.02019-08-23

5.x-dev → 6.0.0-beta12023-02-28

6.1.0 → 7.0.02025-07-07

### Community

Maintainers

![](https://www.gravatar.com/avatar/54ba1a57c516be631e90bac916e1add4a84fe2b39284aa5a5cc5ea37c0d6cefa?d=identicon)[Jono M](/maintainers/Jono%20M)

---

Top Contributors

[![jonom](https://avatars.githubusercontent.com/u/1079425?v=4)](https://github.com/jonom "jonom (46 commits)")[![3Dgoo](https://avatars.githubusercontent.com/u/2616373?v=4)](https://github.com/3Dgoo "3Dgoo (4 commits)")[![jedateach](https://avatars.githubusercontent.com/u/1356335?v=4)](https://github.com/jedateach "jedateach (2 commits)")[![chrispenny](https://avatars.githubusercontent.com/u/505788?v=4)](https://github.com/chrispenny "chrispenny (2 commits)")[![UndefinedOffset](https://avatars.githubusercontent.com/u/1391558?v=4)](https://github.com/UndefinedOffset "UndefinedOffset (2 commits)")[![wernerkrauss](https://avatars.githubusercontent.com/u/1043925?v=4)](https://github.com/wernerkrauss "wernerkrauss (2 commits)")[![howardgrigg](https://avatars.githubusercontent.com/u/188229?v=4)](https://github.com/howardgrigg "howardgrigg (1 commits)")[![korthjp17](https://avatars.githubusercontent.com/u/3858661?v=4)](https://github.com/korthjp17 "korthjp17 (1 commits)")[![lerni](https://avatars.githubusercontent.com/u/472115?v=4)](https://github.com/lerni "lerni (1 commits)")[![mellm0](https://avatars.githubusercontent.com/u/229937?v=4)](https://github.com/mellm0 "mellm0 (1 commits)")[![michalkleiner](https://avatars.githubusercontent.com/u/233342?v=4)](https://github.com/michalkleiner "michalkleiner (1 commits)")[![purplespider](https://avatars.githubusercontent.com/u/329880?v=4)](https://github.com/purplespider "purplespider (1 commits)")[![sb-relaxt-at](https://avatars.githubusercontent.com/u/7354968?v=4)](https://github.com/sb-relaxt-at "sb-relaxt-at (1 commits)")[![TheBnl](https://avatars.githubusercontent.com/u/1334195?v=4)](https://github.com/TheBnl "TheBnl (1 commits)")[![xini](https://avatars.githubusercontent.com/u/1152403?v=4)](https://github.com/xini "xini (1 commits)")[![AndreasL50](https://avatars.githubusercontent.com/u/73597785?v=4)](https://github.com/AndreasL50 "AndreasL50 (1 commits)")[![andrewandante](https://avatars.githubusercontent.com/u/9702648?v=4)](https://github.com/andrewandante "andrewandante (1 commits)")[![anselmdk](https://avatars.githubusercontent.com/u/1316533?v=4)](https://github.com/anselmdk "anselmdk (1 commits)")[![Bob-Plastyk](https://avatars.githubusercontent.com/u/2627448?v=4)](https://github.com/Bob-Plastyk "Bob-Plastyk (1 commits)")[![edwilde](https://avatars.githubusercontent.com/u/415374?v=4)](https://github.com/edwilde "edwilde (1 commits)")

---

Tags

silverstripenavigatorSilverStripeNavigatorBetterNavigator

### Embed Badge

![Health badge](/badges/jonom-silverstripe-betternavigator/health.svg)

```
[![Health](https://phpackages.com/badges/jonom-silverstripe-betternavigator/health.svg)](https://phpackages.com/packages/jonom-silverstripe-betternavigator)
```

###  Alternatives

[silverstripe/userforms

UserForms enables CMS users to create dynamic forms via a drag and drop interface and without getting involved in any PHP code

1371.1M85](/packages/silverstripe-userforms)[symbiote/silverstripe-gridfieldextensions

A collection of useful grid field components

951.9M273](/packages/symbiote-silverstripe-gridfieldextensions)[symbiote/silverstripe-advancedworkflow

Adds configurable workflow support to the CMS, with a GUI for creating custom workflow definitions.

46302.4k9](/packages/symbiote-silverstripe-advancedworkflow)[silverstripe/tagfield

Tag field for SilverStripe

561.3M50](/packages/silverstripe-tagfield)[lekoala/silverstripe-cms-actions

Add actions to your models in SilverStripe

39344.8k31](/packages/lekoala-silverstripe-cms-actions)[silverstripe/sharedraftcontent

Share draft page content with non-CMS users

21424.1k12](/packages/silverstripe-sharedraftcontent)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
