No Code Attached Yet bug
avatar MarcelSchuermann
MarcelSchuermann
19 Sep 2026

What happened?

Steps to reproduce

  1. Install Joomla 6.1.3 (sample data is enough).
  2. Enable the plugin System - Schema.org.
  3. Publish a Breadcrumbs module on all pages.
  4. Open two different pages of the site and read the application/ld+json blocks in the page source.

Version

6.1

Expected result

An @id names one node. Two pages are two different WebPage nodes and two different breadcrumb
trails, so each should carry its own identifier, for example the page URL plus a fragment:

{"@type": "WebPage",        "@id": "https://example.com/about#webpage"}
{"@type": "BreadcrumbList", "@id": "https://example.com/about#breadcrumb"}

The site-wide singletons are correct as they are: #/schema/Organization/base and
#/schema/WebSite/base really are one node per site.

Actual result

Both entities carry one identifier for the whole site, on every page:

{"@type": "BreadcrumbList", "@id": "https://example.com/#/schema/BreadcrumbList/17", "…": "…"}
{"@type": "WebPage",        "@id": "https://example.com/#/schema/WebPage/base",       "…": "…"}

The two places that build these identifiers:

  • modules/mod_breadcrumbs/tmpl/default.php (line 74 in 6.1.3):
    '@id' => Uri::root() . '#/schema/BreadcrumbList/' . (int) $module->id
    The module id is the same on every page the module renders on.
  • plugins/system/schemaorg/src/Extension/Schemaorg.php (line 377 in 6.1.3):
    $webPageId = $domain . '#/schema/WebPage/base';
    The string base is constant.

The content of both blocks is correct per page: url, name and the breadcrumb trail all describe
the current page. Only the identifier is shared.

System Information

  • Joomla 6.1.3
  • PHP 8.3
  • Reproduced on two independent installations of this version.

Additional Comments

Why it matters

A consumer that merges nodes by @id — any JSON-LD 1.1 processor, and several SEO tools — sees one
web page and one breadcrumb trail for the whole site instead of one per URL. Search engines still
read each page on its own, so the visible damage is small, but the markup contradicts the JSON-LD
specification and the schema.org guidance on identifiers.

Suggested fix

Build both identifiers from the current request URL — the same value that is already written to
url — and keep /base for the site-wide entities only.

avatar MarcelSchuermann MarcelSchuermann - open - 19 Sep 2026
avatar joomla-cms-bot joomla-cms-bot - change - 19 Sep 2026
Labels Added: No Code Attached Yet bug
avatar joomla-cms-bot joomla-cms-bot - labeled - 19 Sep 2026
avatar richard67
richard67 - comment - 21 Sep 2026

Sure that this issue happens only with 6.1 but not with 5.4?

Add a Comment

Login with GitHub to post a comment