NavTool/DotNavigation: HTML pages use SEO title instead of friendlyName — add friendlyName field to NavResult and DotNavigation GraphQL type
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 970
- Forks
- 486
- Avg merge
- 3d 33m
- Merged PRs (30d)
- 170
Description
Problem Statement
When querying DotNavigation in GraphQL, the title field on navigation nodes for HTML pages returns the page's SEO title (IHTMLPage.getTitle()) rather than its Friendly Name (the short menu label set on the page's properties). There is currently no way to retrieve friendlyName from DotNavigation — querying the field directly throws a FieldUndefined validation error because the field does not exist on the DotNavigation GraphQL type.
Steps to Reproduce
https://drive.google.com/file/d/1I-iKB6icPYvS89aVB_L5u8tGimYXulwn/view?usp=drive_link
Acceptance Criteria
Current Behavior
DotNavigation.title for htmlpage nodes is populated from itemPage.getTitle(), which maps to the page's SEO/document title.
friendlyName is not a field on NavResult and is therefore absent from the DotNavigation GraphQL schema.
Requesting it throws FieldUndefined.
There is no native way to retrieve the Friendly Name through DotNavigation or the Navigation REST API (/api/v1/nav).
Expected Behavior
DotNavigation should expose a friendlyName field on navigation nodes.
For HTML pages, it should be populated from itemPage.getFriendlyName().
The existing title field should remain as-is (SEO title) for backward compatibility.
Consumers can then use friendlyName for menu labels and title for SEO/metadata — a clean separation of concerns.
dotCMS Version
26.06.04-01
Severity
Medium - Some functionality impacted
Links
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating NavResult and the DotNavigation GraphQL type, then trace how HTML page nodes currently obtain itemPage.getTitle(). Verify the available getFriendlyName() value and inspect existing navigation or GraphQL tests. Done means friendlyName is queryable and populated for HTML pages while title retains its current SEO value.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- graphql, java
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100