Problem/Motivation

Split out from #3033301: Add formatters and other mechanisms as alternative to base fields directly in entity templates.

Steps to Add a tag select list in string(plain text) Formatter :

- Go to any entity like node: https://your_site_url/admin/structure/types/manage/article/fields

- Add plain text field(for eg Sub Title) from manage field tab of content type, then go to manage display of content type:
https://your_site_url/admin/structure/types/manage/article/display

- Here you find the newly added "Sub Title" field & next to it, there is "format column" display where you 'll see now "Title" option visible in select list, along with it there is additional settings that you can configure by clicking "setting icon" that displaying next to it.

title-formatter

In additional setting there are two "format settings" are available :
- Link to the Content: if you enable the checkbox then this newly added field (For eg: Sub Title) content 'll be linked to it's node itself.
- Tag: In it, these options h1,h2,h3,h4,h5,h6,span,div are available to select, when this newly added field (For eg: Sub Title) content render then you 'll see selected tag 'll wrap the content on FE.

configure-settings

configure-settings

Proposed resolution

Instead of creating new TitleFormatter, add a select list to choose what tag to use in the existing StringFormatter

Write a test.

Remaining tasks

Review
UX review
Screenshots

User interface changes

Introduced terminology

API changes

Data model changes

Release notes snippet

Issue fork drupal-3470497

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

AdamPS created an issue. See original summary.

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

pooja_sharma’s picture

Assigned: Unassigned » pooja_sharma

Added title formatter as mentioned in proposed solution , this 'll add title formatter for plain type field for manage display , working on test coverage part in which cover if title formatter selected for field type , then it linked to title or not.on the basis of selected config.

pooja_sharma’s picture

Assigned: pooja_sharma » Unassigned
Status: Active » Needs review

Added title formatter as mentioned in proposed solution & added test coverage as well for title formatter, apart form nothing seems to be left.

PLease review, moving NR

smustgrave’s picture

Status: Needs review » Needs work

Saw this one early, left some comments.

pooja_sharma’s picture

Assigned: Unassigned » pooja_sharma

Thank for reviewing, working on it

pooja_sharma’s picture

Assigned: pooja_sharma » Unassigned
Status: Needs work » Needs review

Addressed the feedback, left one comment on MR. PLease review, moving NR.

smustgrave’s picture

Status: Needs review » Needs work
Issue tags: +Needs Review Queue Initiative

Responded to comment

smustgrave’s picture

Issue tags: +Needs change record

Will also need change record.

pooja_sharma’s picture

Assigned: Unassigned » pooja_sharma

Thanks for reviewing. working on the feedback.

quietone’s picture

Nice to work on issues in the Modernization effort. Thanks!

This is changing the UI so adding Usability tag. As a new form this should have a Usability review as well, so adding that tag. And screenshots available from the issue summary.

pooja_sharma’s picture

Issue summary: View changes

Tried to address feedback, Added: validation constrains, change records, screenshots in IS.

MR is mergeable, however there is validation config warning that shows this is 'field.formatter.settings.title', added which is correct , so it seems it is just message not any error message displaying here. PLease review, moving NR.

pooja_sharma’s picture

Assigned: pooja_sharma » Unassigned
Status: Needs work » Needs review
smustgrave’s picture

Issue tags: -Needs screenshots

Code wise don't see anything but leave in review for usability

mradcliffe’s picture

Could a site builder end up creating a situation where they set the sub title to use h2 and then the hierarchy no longer matches between teaser and page views?

- Page
- h1: Node Title via page-title
- h2: Sub title
- Teaser
- h1: Page title
- h2: Node title
- h2: Sub title

pooja_sharma’s picture

Could a site builder end up creating a situation where they set the sub title to use h2 and then the hierarchy no longer matches between teaser and page views?

- Page
- h1: Node Title via page-title
- h2: Sub title
- Teaser
- h1: Page title
- h2: Node title
- h2: Sub title or h3: Sub title (whatever selected in tag of title formatter in specific form mode like here teaser, 'll render on FE)

Yes I have verified it is possible, correct me if I 'm missing anything.

sheetal.pathak’s picture

StatusFileSize
new69.91 KB

I am not able to reproduce issue , not getting Title dropdown

Steps to followed
1. Added Plain text filed in Article.
2. Configured in manage display , not getting title Drop down in Format column fort "Title".
3. Adding screenshot for reference.

sokru’s picture

Issue summary: View changes
Status: Needs review » Needs work
Issue tags: -Needs change record

+1 for adding this feature, so it would make easier to land the parent issue.
Left suggestion also to add H6 -level element.

I assume #18 was missing a cache clearance.

pooja_sharma’s picture

Status: Needs work » Reviewed & tested by the community

h6 tag by mistaken missed added back, Please review moving NR

pooja_sharma’s picture

Status: Reviewed & tested by the community » Needs review
benjifisher’s picture

Status: Needs review » Needs work
Issue tags: -Needs usability review

Usability review

We discussed this issue at #3472580: Drupal Usability Meeting 2024-09-13. That issue has a link to a recording of the meeting.

For the record, the attendees at the usability meeting were @AaronMcHale, @benjifisher, @rkoller, @shaal, @simohell, @worldlinemine, and @zetagraph.

We like the idea of giving site builders more flexibility in how plain-text fields are displayed. Once the parent issue is done, it will be much easier for site builders to create a consistent heading hierarchy, which will be a big a11y improvement.

Our main recommendation is that we improve the existing (default) formatter for plain-text fields instead of adding a new one. That is, add the select list of tags to the existing formatter. I read the comments on this issue and on the parent issue, and I did not see any discussion of this option. Is there any reason to have a separate formatter?

For backwards compatibility, we will have to add an option (for example, - none -) and make that the default.

A minor advantage of improving the existing formatter is that we do not have to decide how to name (or label) the new one. Naming things is hard, and it is generally best to name things after what they do. The proposed label in this issue is "Title", which is how you expect to use it rather than a description of what it does.

Our other recommendations are

  1. Use "Display as" as the label for the select list.
  2. Remove the description field (help text). In general, we try to make our labels clear enough that we do not need help text.
  3. In the summary description, use "Displayed as …". This will be more consistent with the existing text "Linked to the Content".

Once this issue is implemented, people are likely to ask for additional options: <p> and <code> and so on. This seems like a good idea for a follow-up issue: either a hook that modules can implement or some global configuration that site builders can choose in order to change the list of available tags.

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

pooja_sharma’s picture

Assigned: Unassigned » pooja_sharma
Issue tags: +Upgrade path

Thanks for reviewing it, I agree , we can simply enhance the existing formatter rather than introducing new one. In proposed solution section written

Create a TitleFormatter

so I thought need to create new one.

I believe along with one mentioned feedback need upgrade path as well , as we are enhancing existing formatter, feel free to add anything that needs to be taken care along with these changes.

mortona2k’s picture

I would not mind being able to select a tag for the plain text formatter to do this. But what about setting a class, or settings for field/wrapper elements? I am thinking of the Fences module.

benjifisher’s picture

@poojah_sharma:

If the default "none" option is represented in the database as no entry (as opposed to an entry of "none") then I am not sure we need an upgrade path. At least, if "upgrade path" means an update (or post-update) function.

In proposed solution section written ... so I thought need to create new one.

Any issue on d.o is a cooperative effort. We often think of better solutions before an issue is fixed, so do not assume that the current proposed resolution is the final one. If you have a better idea, then suggest it. Since we are changing the resolution, we should update that section of the issue summary. I am adding the tag for that. I probably should have done that with my previous comment.

@mortona2k:

I am also a fan of the Fences module, and we looked at it during the usability meeting. But let's not expand the scope of this issue to include everything that Fences provides. The current scope is enough to advance the parent issue. If you want all the features of Fences, then install it, and if you think that should be part of core then open a new issue to discuss it.

In fact, once the parent issue is fixed, you should be able to install the Fences module and then add CSS classes to your node titles (and not just nodes).

pooja_sharma’s picture

Issue summary: View changes
StatusFileSize
new65.19 KB
new59.95 KB
new129.55 KB
pooja_sharma’s picture

Assigned: pooja_sharma » Unassigned
Status: Needs work » Needs review
Issue tags: -Upgrade path, -Needs issue summary update

@benjifisher, I missed the point, like better solution is to add same tag in existing formatter instead of creating new one, thanks for the feedback, 'll try to keep address these points as well.

Try to addressed the requested changes , update issue summary as well. as we have used '-None- as by default so when I try save entity from "manage form" page then is no any error encountered , I guess no need to add upgrade path as well.

PLease review, moving NR.

pooja_sharma’s picture

Title: Add a Title Formatter » Add a tag select list in string Formatter
pooja_sharma’s picture

Issue summary: View changes
adamps’s picture

Status: Needs review » Reviewed & tested by the community

I am happy with the idea to extend the existing formatter rather than create a new one. In the manage display module we can create a migration from TitleFormatter.

The new code looks good to me thanks.

pooja_sharma’s picture

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

Added test coverage in existing kernel test instead of creating new functional test considering performance perspective.

Please review, moving NR.

pooja_sharma’s picture

Assigned: Unassigned » pooja_sharma

Resolving conflicts, verifying functionality

pooja_sharma’s picture

Status: Needs review » Needs work
pooja_sharma’s picture

Assigned: pooja_sharma » Unassigned
Status: Needs work » Needs review

Resolved MR conflicts, functionality seems working fine.

Please review , moving NR.

manibharathi ezhimalai ravi’s picture

StatusFileSize
new555.64 KB
new1.45 MB
new227.97 KB
new232.84 KB

Hi,
Changes has been verified in the issue fork branch. working has expected to the branch.
Before Branch:
before_patch
After: Branch:
After_patch
Ui_changes

But the patch 9341.patch is failing in the Drupal 11.x branch. Please find the screenshot for the more understanding.
Patch_fail

sokru’s picture

Status: Needs review » Reviewed & tested by the community

I think all threads should be resolved now.

larowlan credited rkoller.

larowlan credited shaal.

larowlan credited simohell.

larowlan’s picture

Issue credits, including those from UX meeting
Crediting @manibharathi ezhimalai ravi for manual testing

larowlan’s picture

Status: Reviewed & tested by the community » Needs work
Issue tags: +Needs update path

This is a great feature. We need to add an upgrade path.

This should take the form of a post update hook that makes use of the config entity updater.

There should also be a test that asserts the value isn't set before running update, and then checking it is set.

There's a good example of a similar update hook (also for entity view displays) here https://git.drupalcode.org/project/drupal/-/merge_requests/10002/diffs#2...

This MR also contains a good example of an upgrade path test - https://git.drupalcode.org/project/drupal/-/merge_requests/10002/diffs#2...

Unfortunately it doesn't look like there are any instances of this formatter in use in the standard profile, so that means you will have to create a new database dump/fixture file. \Drupal\Tests\views\Functional\Update\EntityArgumentUpdateTest in core has an example of how to add additional test fixtures to the default standard dump.

The docs have more information on how you can do that - https://www.drupal.org/docs/drupal-apis/update-api/writing-automated-upd...

pooja_sharma’s picture

Assigned: Unassigned » pooja_sharma

@larowlan, Thanks for reviewing , working on it

andypost’s picture

mradcliffe’s picture

Issue summary: View changes

I fixed a typo and changed the resolution from being a question to a statement in the proposed resolution that made it difficult for me to understand without reading the code.

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.