dotCMS / dotCMS/core

NavTool/DotNavigation: HTML pages use SEO title instead of friendlyName — add friendlyName field to NavResult and DotNavigation GraphQL type

Open
#36,270 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

OKR : Customer Support Team : Maintenance
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

https://dotcms.freshdesk.com/a/tickets/38026

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.