Problem/Motivation

There are several technical and architectural issues with the current "Manage display" implementation.

The first issue is the default view mode route dependency. Currently, the "Manage display" tab defaults directly to the default view mode edit form. To eventually deprecate or remove the default view mode in #2844203: Improve/Simplify situation around Default/Full view modes/view displays, we need a replacement entry point. While we could replace it with the "full" view mode, there's some technical complexity with how this would work with local tasks.

The second issue is display builder integration. Layout Builder, Display Builder, Canvas, and other display builders don't have a clear, standardized way to integrate with Field UI. The current architecture assumes Field UI is the primary display builder, making it difficult for alternative builders to provide their own management interfaces. We could accommodate multiple display builders working alongside each other much better than we do today.

This dependency also makes it difficult to eventually remove or replace Field UI's display building capabilities. By creating a neutral overview page that acts as a navigation hub, we can decouple the navigation from the specific display builder implementation.

Steps to reproduce

Navigate to Structure > Content types > [Content type] > Manage display. Observe that you are taken directly to the default display mode edit form. Notice that the route structure assumes Field UI is the only display builder.

Proposed resolution

Create a new overview page for "Manage display" that serves as a display-builder agnostic navigation hub. Add a new route at /admin/structure/types/manage/{bundle}/display that displays a table overview of all display modes for the bundle. This route is display-builder agnostic and serves as a neutral navigation hub.

Make the overview page the default local task, replacing the direct link to the default display mode. This provides a stable entry point that doesn't depend on any specific view mode.

Remaining tasks

User interface changes

Introduced terminology

API changes

Data model changes

Release notes snippet

Added overview page for managing display modes that provides a display-builder agnostic navigation hub. "Manage display" now defaults to an overview page instead of the default view mode, providing a stable entry point. Display modes can now be enabled or disabled directly from the overview page.

Issue fork drupal-3564234

Command icon 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

lauriii created an issue. See original summary.

lauriii’s picture

Status: Active » Needs review

Moving to needs review on the high level approach. The MR will fail inevitably at this point since I haven't updated any of the tests.

lauriii’s picture

Issue summary: View changes
StatusFileSize
new395 KB

Adding a screenshot to the issue summary.

grimreaper’s picture

Hi,

Thanks for the issue and the proposal.

Would it ease flexibility and be future-proof that instead of "just" enable/disable on the view mode (and why not also form mode in the future :)), it should be a select list with the different display builders available:

- Disabled (empty value)
- Field UI
- Layout Builder
- Display Builder
- Canvas
- (other)

I have not checked but I guess then we could declare the display builder as plugins for discoverability, plugin methods/interface could provide the routes for local tasks, admin actions, etc. dynamically.

catch’s picture

This looks like a good idea to me, haven't reviewed the MR yet.

We should open a follow-up to apply the same pattern to form modes, and also revive #2721727: Allow user to add display modes from respective field UI's. - that should allow removing the 'Display modes' menu item from admin/structure entirely, always forget that's where you have to go to add one.

joachim’s picture

Since view mode config entities have a description, could we put that in the table, and then make the help text less wordy?

grimreaper’s picture

Another thought I had about proposal from comment 5, is those "display_builder" plugins could implement a method to react to the change of selected display builder for view mode.

The method could have as arguments $previousBuilderId, $previousBuilderData. That way the plugins could optionally do data/config migration from one builder to it.

Would it be also the occasion to standardize "override per content" feature?

- Layout Builder allows to override the full view mode (or default if full is not enabled)
- Display Builder allows to override any view mode by allowing to select the field to store data into

catch’s picture

@joachim Adding the description to the table sounds good, and yes good way to reduce the help text verbosity.

@grimreaper I think we should probably look at the display builder selection proposal in its own issue postponed on this one because it sounds like it might end up needing API changes/additions.

grimreaper’s picture

@catch I completely agree that it could be a big change and need to synchronize the change with the different display builder modules. So, to handle in its own issue at its own speed.

lauriii’s picture

I’ve updated the table to display the description and I’ve shortened the help text.

All of the tests are now passing! Changes were mostly related to updating the tests to use the new URL for the default display mode.

I think it would make sense to commit this as is and add various improvements like being able to modify the available view modes in a follow-up.

grimreaper’s picture

Child issue #3564677: Add a display_builder plugin API and selection created regarding comment 5, 8 and 9.

godotislate’s picture

Does this need to go to usability review? Tagged for IS update for screenshot including added description.

lauriii’s picture

I got a +1 from @ckrina in https://drupal.slack.com/archives/C079NQPQUEN/p1766215827620139 on this. We will have to make some improvements to the UX in #2721727: Allow user to add display modes from respective field UI's. to start slowly getting rid of the separate display modes UI.

lauriii’s picture

Issue summary: View changes
godotislate’s picture

Re: #14

I got a +1 from @ckrina in https://drupal.slack.com/archives/C079NQPQUEN/p1766215827620139 on this.

Awesome! I brought up usability review because I saw that the UX team had usability/accessibility concerns on #2409559: User should be able to identify required fields from field listing after it was already committed, so I thought maybe it'd be good to do that before committing here.

grimreaper’s picture

Status: Needs review » Reviewed & tested by the community

Hi,

Code review addressed from comment 15.

Ok for me.

Thanks and happy new year!

catch’s picture

I didn't original think about an accessibility review of #2409559: User should be able to identify required fields from field listing because it was 'just a table', but when it was mentioned on that issue after commit, I realised it was adding some elements to combine information in a single table cell which probably could use accessibility review.

In this case though I think the new UI (at least from the screenshots) really is 'just a table' so it should not be introducing any new elements/patterns/styling that could introduce new accessibility issues. Haven't reviewed the actual MR here properly though.

bkosborne’s picture

Just want to say big +1 to this. I think this is a huge improvement.

Version: 11.x-dev » main

Drupal core is now using the main branch as the primary development branch. New developments and disruptive changes should now be targeted to the main branch.

Read more in the announcement.

needs-review-queue-bot’s picture

Status: Reviewed & tested by the community » Needs work
StatusFileSize
new10.55 KB

The Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

lauriii’s picture

Status: Needs work » Reviewed & tested by the community

Rebased the MR and tests are passing

catch’s picture

Status: Reviewed & tested by the community » Needs review

Couple of questions on the MR.

lauriii’s picture

Feedback in the MR has been addressed and I've simplified the MR by removing the Ajax for enabling/disabling display modes.

benjifisher’s picture

Status: Needs review » Needs work

Usability review

We discussed this issue at #3572725: Drupal Usability Meeting 2026-02-20. That issue has a link to a recording of the meeting.

The attendees at the usability meeting were @benjifisher, @pallavi singh3013, and @rkoller. I am giving them credit on this issue.

There are some things we like about the changes here:

  • It is more consistent than the current approach, where the form for the Default view mode has an extra section (details element closed by default) that is not on the other forms.
  • The extra section on the old Default form was a bit confusing, since a form should not manage unrelated features.

On the other hand, one drawback is that it will now require following an additional link when the user wants to edit the Default view mode.

I notice that there are a few more commits since we tested, and some of the problems we noticed are now fixed: the links on the overview page now have visually hidden text for improved accessibility, and they trigger a full page load so that the secondary tabs are updated.

There are three more things we do not like about the current state of this feature:

  1. We miss the link ("Manage view modes") to /admin/structure/display-modes/view that used to be on the form for the Default view mode.
  2. There is a lot of whitespace in the table, especially on large screens.
  3. The tables on the Overview page are labeled "Enabled display modes" and "Disabled display modes". They should be "Enabled view modes" and "Disabled view modes".

It should be pretty easy to fix (1) by adding a sentence to the test at the top of the new Overview page.

A comprehensive fix for (2) is out of scope for this issue, so I opened #3574972: Admin tables can have too much horizontal whitespace, creating accessibility problems. For now, we could mitigate the problem by adding descriptions to the view modes in the Standard profile, and other core profiles. (That could be a follow-up issue.) Or we could simply remove the Description column from the tables on the Overview page.

Regarding (3), I know that I have trouble remembering which is which, but Display mode is the generic term, including View mode and Form mode. (This point did not come up during the usability meeting.)

One other thing we noticed is that there is no way to edit a disabled view mode. That is not a change from current behavior, so it is out of scope for this issue, but perhaps we should reconsider that behavior.

If you want more feedback from the usability team, a good way to reach out is in the #ux channel in Slack.

lauriii’s picture

Status: Needs work » Needs review

Thank you for the review! Addressed the feedback in the MR. Also opened #3575074: Add descriptions to view modes in Standard profile to add the descriptions.

lauriii’s picture

Rebased the MR and it's passing tests again

pameeela made their first commit to this issue’s fork.

pameeela’s picture

I found the sentence at the top a bit confusing, I think it works better just as 'Manage view modes' and moved it to the bottom which I felt is better suited to the priority of this task. (Specifically, the idea that you go there to 'edit' view modes is strange -- yes, you can change the name there, but the editing you probably want to do is here in the configuration of them.)

Not sure if I can RTBC this since I made a change but here's a screenshot of the updated UI in Gin:

lauriii’s picture

StatusFileSize
new362.79 KB

Changed the link to an action link displayed above the table:

Also addressed feedback from the MR.

pameeela’s picture

That is definitely better :) I would drop the last sentence about enabling and disabling as needed, I think that’s self evident?

pameeela’s picture

Issue summary: View changes
Status: Needs review » Reviewed & tested by the community

LGTM!

godotislate’s picture

Status: Reviewed & tested by the community » Needs work

This MR is a beast and I haven't gotten all the way through yet, but since I found some things worth working on already and out of time for now, sending back to NW. I'll try to revisit soon and add any other comments.

lauriii’s picture

Status: Needs work » Needs review

Thanks for the review @godotislate for the review! Addressed all the feedback so far.

pameeela’s picture

Issue summary: View changes
Status: Needs review » Reviewed & tested by the community
StatusFileSize
new155.28 KB

Feedback is addressed, updated the screenshot in the IS for the current state.

  • catch committed 38336a5b on main
    feat: #3564234 Add display-builder agnostic overview page for display...
catch’s picture

Version: main » 11.x-dev
Status: Reviewed & tested by the community » Patch (to be ported)
Issue tags: +11.4.0 release highlights

I think this is in a good spot. Committed/pushed to main, thanks!

Is #2721727: Allow user to add display modes from respective field UI's. the right place to add an 'add' local action here, so that we can get closer to removing admin/structure/display-modes?

And do we need a follow-up to apply the same pattern to form modes?

Will need a backport MR for 11.x but looks like only one conflict in services.yml so hopefully not bad.

smustgrave made their first commit to this issue’s fork.

smustgrave’s picture

Status: Patch (to be ported) » Needs review

Actually had to do additional work for field_layout so putting in review for those changes.

smustgrave’s picture

Status: Needs review » Patch (to be ported)

Looks like needs more work

smustgrave’s picture

Status: Patch (to be ported) » Needs review

Lets try that.

needs-review-queue-bot’s picture

Status: Needs review » Needs work
StatusFileSize
new1.45 KB

The Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

smustgrave’s picture

Status: Needs work » Reviewed & tested by the community

Bad bot this rebased just fine with 11.x

needs-review-queue-bot’s picture

Status: Reviewed & tested by the community » Needs work
StatusFileSize
new1.45 KB

The Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

catch’s picture

Status: Needs work » Reviewed & tested by the community
Issue tags: +no-needs-review-bot
catch’s picture

Status: Reviewed & tested by the community » Needs review

Actually looks like the field_layout changes still need review.

dcam’s picture

Status: Needs review » Reviewed & tested by the community

I couldn't figure out why PHPStan was complaining about FieldLayoutEntityDisplayFormTrait. It doesn't look like there are any related changes that would have made those return type declarations necessary. But maybe I missed something. I don't think they'll hurt anything, so they should be fine.

The most drastic change to be validated was to FunctionalJavascript/FieldLayoutTest. These changes were necessary because the test is dependent on the HTML structure of that page to test managing the layout. It had to be adapted to enable the required view mode in the newly designed display management page before accessing the view mode's settings. I manually followed the steps in the test and was able to verify that they're correct. The changes look good to me.

  • catch committed 987768ba on 11.x
    feat: #3564234 Add display-builder agnostic overview page for display...

catch’s picture

Status: Reviewed & tested by the community » Fixed

Committed/pushed to 11.x, thanks! I managed to mess up the attribution on the commit message - looks like issue credit didn't get saved last time. But issue credit should be correct as well as the commit on main.

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.