Problem/Motivation
This issue is not related to #3529095: Adopt navigation module's top bar but leverage the same Core APIs.
Users don't easily know if a display has been built with Display Builder or not. This is particularly confusing for Page Layouts, because they obey indirect and sometimes complex visibility condition rules.
Proposed resolution
Mockup:

Instead of an ugly link, it would be better to use an icon, with or without a label. Or the logo, once #3544785: New logo.png for the project is resumed?
Proposal 1: only page layouts
When a page is built with Display Builder, add a toolbar item. This one is straightforward.
Proposal 2: page layouts & main content
When a page, or the main content of a page, is built with Display Builder, add a toolbar item with a link.
We will have 2 links or twice the same icon. How do we manage this?
| Comment | File | Size | Author |
|---|---|---|---|
| Capture d’écran du 2026-08-13 10-40-08.png | 8.92 KB | pdureau |
Issue fork display_builder-3616421
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
pdureau commentedlet's go :)
Comment #3
pdureau commentedWork in progress:
Comment #5
pdureau commentedFinally, I prefer do Page Layout only because for other buildable in main content (entity view with full display, views with page display), there may be better tools like the little menu directly wrapping the content (i don't remember the name), or local tasks plugins to be listed in
\Drupal\navigation\Plugin\TopBarItem\PageActionsComment #6
mogtofu33 commentedThe icon will appear on the display builder itself, which makes no sense with an empty top bar and an offset problem.
Note that to get current display label is purpose of
getDisplayLabelin #3615031: Enhance instances list for better navigation. Probably to have first and then we can decide where to use it.From current state this work seems to makes sense only when we migrate fully to Navigation top bar? Or we must isolate to when 'view' a display and not edit.
Comment #7
pdureau commentedOh! thanks. I didn't check this. I will add a condition to not print this for display builder pages.
We can wait but I am not sure we will use
::getDisplayLabel()here. Telling than the page is build with Display Builder may be enough. De we need to tell there which page layout config entity has been used?This is an optional feature for people using Core's Navigation module. This is not related to #3529095: Adopt navigation module's top bar
Comment #8
pdureau commentedoops, i wanted to assign to me and i misclicked :)
Comment #9
pdureau commentedFixed, but still some cache issues. Keep working on it.
Comment #10
pdureau commentedThe message has been moved to the end of the toolbar (
TopBarRegion::Actions) because it is where this seems to be expected (if i put it in start or middle region, the toolbar is always visible, even when empty).DisplayBuildableInterface::getDisplayLabel()is now available, but I preferred to not use it, to keep the message short. Whatdo you think?Comment #11
mogtofu33 commentedWe try to provide user with 1 information and 1 related action and we live side of existing possible content edition in toolbar. And I noted behavior of title is different when sidebar is open and we have the small viewport cases as well.
Here is the result, left is an editable content, right is a regular page that now have the top bar because of this link.
Mix Text and icon that will swap with left sidebar behavior seems strange and not good.
For left case when living with edit we should probably be in the 3 dots menu as 'Manage display' only.
For right case it's annoying because we trigger an empty top bar, so I think it is too soon for us to plug there.
Comment #12
pdureau commentedTo achieve that, we need to add a local task plugin corresponding to the roue, because this menu is managed by
\Drupal\navigation\Plugin\TopBarItem\PageActionsplugin which is collecting the local tasks.It is doable using a deriver, I guess, but:
Maybe a button would be better. I will try that, and I will shorten the label: from "Page built with Display Builder" to "Edit page display"
I don't see the issue us being the only interactive element of the toolbar on some pages. Maybe it will be less weird with the button. Let's try.
Comment #13
pdureau commentedStill a low priority feature, but a nice one :)
Comment #15
mogtofu33 commentedComment #16
pdureau commentedRebased
Comment #17
mogtofu33 commentedComment #18
mogtofu33 commentedI think it would be better to have a global vision of navigation top bar integration as for me we bring confusing asynchrone links behaviors between our builders.
My proposition is global #3624760: Plan: consistent Display Builder entry points in the Navigation top bar to have the goal and discussion with child issues for each.
A proposal for the implementation here, so the other entries can build on it:
Main content and Views entries would follow as separate children of the plan, reusing the same item.
The top bar inside builders is out of scope here: the plan proposes reverting #3543335: Navigation top bar not present on entity overrides so no builder shows it until #3529095: Adopt navigation module's top bar.
What do you think? MR !344 already does most of the work (route checks, cache tags, access); it is mostly the rendering and the label that change.
Comment #19
pdureau commentedI love the idea.
Great. So, how do we process? We merge this ticket first (to get the "deep" logc) and continue the work/discussion in #3624760: Plan: consistent Display Builder entry points in the Navigation top bar?
I agree, this is totally unrelated to #3529095: Adopt navigation module's top bar.
I don't see the relation here, but let's revert if if needed. It would be nicer to have the revert as a commit inside a MR instead of in the main branch, but this is only an esthetic preference, no big deal.
Comment #20
mogtofu33 commentedWill merge, for the revert #3543335: Navigation top bar not present on entity overrides: it is the only reason one of our four builders shows the core top bar. Its link templates make Navigation treat
/node/{node}/display/{mode}as a content entity route, so the override builder gets the core top bar stacked on top of our own toolbar, while the page layout, bundle display and Views builders get none.The plan picks "no top bar in any builder" as the consistent rule for a fresh start.
And yes, the revert will be a commit in an MR, not straight on the main branch, hence the child issue #3624761: Remove the Navigation top bar from the entity override builder
Comment #22
mogtofu33 commented