application/ld+json blocks in the page source.6.1
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.
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->idplugins/system/schemaorg/src/Extension/Schemaorg.php (line 377 in 6.1.3):$webPageId = $domain . '#/schema/WebPage/base';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.
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.
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.
| Labels |
Added:
No Code Attached Yet
bug
|
||
Sure that this issue happens only with 6.1 but not with 5.4?