User tests: Successful: Unsuccessful:
Pull Request for Issue #45277.
[Updated 2025-04-18]
1 - Joomla breadcrumb module outputs something similar to:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"@id": "https://example.com/#/schema/BreadcrumbList/17",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@id": "https://example.com/",
"name": "Home"
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@id": "https://example.com/blog/",
"name": "Blog"
}
},
{
"@type": "ListItem",
"position": 3,
"item": {
"name": "Article T6"
}
}
]
}
2 - Schema.org system plugin output similar to:
{
"@type": "WebPage",
"@id": "https://dev.weeblr.net/_projects/products/platforms/j5/#/schema/WebPage/base",
"url": "https://dev.weeblr.net/_projects/products/platforms/j5/blog/article-t6",
"name": "Article T6",
"description": "Lorem ipsum dolor sit amet. Eos nihil repellendus et optio quia non dolore omnis ut adipisci enim. Aut laborum animi qui reprehenderit recusandae et reiciendis ...",
"isPartOf": {
"@id": "https://dev.weeblr.net/_projects/products/platforms/j5/#/schema/WebSite/base"
},
"about": {
"@id": "https://dev.weeblr.net/_projects/products/platforms/j5/#/schema/Organization/base"
},
"inLanguage": "en-GB",
"breadcrumb": {
"@id": "https://dev.weeblr.net/_projects/products/platforms/j5/#/schema/BreadcrumbList/17"
}
},
1 - Valid json-ld is similar to:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"@id": "https://example.com/#/schema/BreadcrumbList/17",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://example.com/blog/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Article T6"
}
]
}
The change is in the details of each ListItem:
Bad:
{
"@type": "ListItem",
"position": 2,
"item": {
"@id": "https://example.com/blog/",
"name": "Blog"
}
},
Good:
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://example.com/blog/"
},
2 - Breadcrumb link removed from schema.org output:
{
"@type": "WebPage",
"@id": "https://dev.weeblr.net/_projects/products/platforms/j5/#/schema/WebPage/base",
"url": "https://dev.weeblr.net/_projects/products/platforms/j5/blog/article-t6",
"name": "Article T6",
"description": "Lorem ipsum dolor sit amet. Eos nihil repellendus et optio quia non dolore omnis ut adipisci enim. Aut laborum animi qui reprehenderit recusandae et reiciendis ...",
"isPartOf": {
"@id": "https://dev.weeblr.net/_projects/products/platforms/j5/#/schema/WebSite/base"
},
"about": {
"@id": "https://dev.weeblr.net/_projects/products/platforms/j5/#/schema/Organization/base"
},
"inLanguage": "en-GB",
},
The change is that the lines:
"breadcrumb": {
"@id": "https://dev.weeblr.net/_projects/products/platforms/j5/#/schema/BreadcrumbList/17"
}
have been removed.
Ref: https://developers.google.com/search/docs/appearance/structured-data/breadcrumb
Status | New | ⇒ | Pending |
Category | ⇒ | Modules Front End |
Hi @weeblr, yes and I very much appreciate that but mine is not changing...
On a Joomla 5.3 Stable (part of the CMS testing team so I have 5.3.0 Stable) test installation, no error when using the Google Structured Data tester without the patch... but on a customer site with 4SEO, I get the error and this patch doesn't change things...
I'm trying but doing something wrong it appears... I'll let someone else test this I guess.
The valid test result is when you have the bad code output before the patch and the correct source code output after the patch.
I have tested this item ✅ successfully on bad9f2a
I was able to test this successfully...
OK, thanks @weeblr (it was the Google Webmaster Tools that had detected the problem).
Before Patch:
{"@context":"https://schema.org","@type":"BreadcrumbList","@id":"https://www.mood-lights.com/_j525/#/schema/BreadcrumbList/17","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://www.mood-lights.com/_j525/en","name":"Home"}},{"@type":"ListItem","position":2,"item":{"@id":"https://www.mood-lights.com/_j525/en/blog","name":"Blog"}}]}
After Patch:
{"@context":"https://schema.org","@type":"BreadcrumbList","@id":"https://www.mood-lights.com/_j525/#/schema/BreadcrumbList/17","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.mood-lights.com/_j525/en"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://www.mood-lights.com/_j525/en/blog"}]}
(the _j525 is now a Joomla 5.3.0 installation)
Yes, that's the expected output.
Now the actual issue reported by many users is coming from the Search Console.
One can only test the actual result from Google standpoint if they have a site which received these reports and apply the change to their site.
But at least this code output is compliant with the spec
Title |
|
Title |
|
I have tested this item ✅ successfully on bad9f2a
Status | Pending | ⇒ | Ready to Commit |
RTC
Ideally we should have testers who can confirm now that this fixes the issue with the Google search console.
Requires someone who:
Again, in my own testing the simple online google structured data tester does not report Joomla current output as an error (which it is), only GSC does
I have a site where GSC has issues with 14 articles.
How can I apply the patch? I currently run Joomla 5.2.4
@HMD19750 You will have to manually modify your modules/mod_breadcrumbs/tmpl/default.php file for this, or rather I think create a template override for it, and then change the few modified lines to your template override.
If you click at the top of this page on the "Files changed" tab, you'll see the changes.
After that's done, you should first check that the output in your site source code is indeed changed and now correct.
After that, you can verify the page with GSC.
Originally I got the following error from GSC on e.g. page https://www.deijsmannetjes.nl/onze-klanten:
Missing field 'itemListElement'
Items with this issue are invalid. Invalid items are not eligible for Google Search's rich results
GSC pointed to this line on the page:
<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.deijsmannetjes.nl/#/schema/Organization/base","name":"IJsventbedrijf De IJsmannetjes","url":"https://www.deijsmannetjes.nl/"},{"@type":"WebSite","@id":"https://www.deijsmannetjes.nl/#/schema/WebSite/base","url":"https://www.deijsmannetjes.nl/","name":"IJsventbedrijf De IJsmannetjes","publisher":{"@id":"https://www.deijsmannetjes.nl/#/schema/Organization/base"}},{"@type":"WebPage","@id":"https://www.deijsmannetjes.nl/#/schema/WebPage/base","url":"https://www.deijsmannetjes.nl/onze-klanten","name":"Logos","description":"Logos van klanten van de ijsmannetjes","isPartOf":{"@id":"https://www.deijsmannetjes.nl/#/schema/WebSite/base"},"about":{"@id":"https://www.deijsmannetjes.nl/#/schema/Organization/base"},"inLanguage":"nl-NL","breadcrumb":{"@id":"https://www.deijsmannetjes.nl/#/schema/BreadcrumbList/17"}},{"@type":"Article","@id":"https://www.deijsmannetjes.nl/#/schema/com_content/article/20","name":"Logos","headline":"Logos","inLanguage":"nl-NL","isPartOf":{"@id":"https://www.deijsmannetjes.nl/#/schema/WebPage/base"}}]}</script>
Where the problem was in this part:
{"@id":"https://www.deijsmannetjes.nl/#/schema/BreadcrumbList/17"}
I made the modification to modules/mod_breadcrumbs/tmpl/default.php file on my site www.deijsmannetjes.nl.
But nothing changed for GSC!
GSC pointed to this line on the page:
Where the problem was in this part:
They were correct, as the breadcrumb markup is indeed linked from your main @graph item.
I made the modification to modules/mod_breadcrumbs/tmpl/default.php file on my site www.deijsmannetjes.nl.
But nothing changed for GSC!
Unable to check anything as you have removed all schema from this page.
I do not understand your answer: I thought the line of code I referred to in my last comment, is the schema information? If I switch off schema.org in Joomla, the line disappears.
But the modification I applied to modules/mod_breadcrumbs/tmpl/default.php has not solved the problem with GSC.
Hi
I thought the line of code I referred to in my last comment, is the schema information?
Both lines are schema information. The first is the global output by Joomla. The second is output by the breadcrumb module.
Google pointed at the first line but that line had no problem in itself. However it referenced it the faulty breadcrumb output, which is why they mentioned the first line.
Anyway, that's not the point here.
But the modification I applied to modules/mod_breadcrumbs/tmpl/default.php has not solved the problem with GSC.
I'm not sure what you are doing here but like I said before, you have no schema at all anymore. Neither the main Joomla one, nor the breadcrumb one (output by the breadcrumb module).
So there's nothing to check or verify here, until you enable that back and there's again schema information on your website.
Before you check anything with GSC, you should first open your page source code and check what the code generated by Joomla is.
There's no point in submitting anything to GSC if you did not check first if something has changed on your page content. Or if you do not have any schema information anymore of course.
Do you know who should release global joomla updates or the framework manufacturer? Google informs me on every page I have about the lack
"name" or "item.name" must be specified (in "itemListElement") Missing field "position" (in "itemListElement") Missing field "item" (in "itemListElement") Missing field "itemListElement"
Labels |
Added:
RTC
bug
PR-5.3-dev
|
When can we expect a patch for this? I'd like to clear this error from GSC.
When can we expect a patch for this? I'd like to clear this error from GSC.
@trogladyte The patch is in this PR (Go to tab "Files changed"). The patch already is RTC.
But it would be good to have someone test the patch on a live site, where GSC throws this error. As you can see, the PR code deletes only seven lines and inserts three lines within one PHP file. So, with some caution, you should be able to manually modify this file in your site and check for GSC's reaction.
This would really help the maintainers ..... and it would speed up the rollout of the patch, hopefully in the upcoming release 5.3.1.
I did this test on a single site by direct editing the default.php file. Went to GSC and did a Validation which failed. I'm confused as to why it would be just a single page receiving the error and not every page (except the Home page which does not have breadcrumbs displaying).
Checking on other sites in GSC with the same issue reported, even for ones that have a "Last crawled date" of yesterday - April 16 - none of them show any failing URLs for yesterday or today. May mean something, and maybe not.
I had exactly the same for my website.
Hi
@trogladyte I can at least test this page in the Google SD tester and it does test it.
But it does something weird: it reports TWO breadcrumbs: one valid, one invalid:
And so I think I understand the problem. It's not (only) in the breadcrumb module (which was invalid anyway, but accepted).
The source of the problem is in the output of the Schema.org plugin. That output references the breadcrumb module output with:
And I'm pretty sure this is what's invalid. If the breadcrumb is mentioned here, it must be present in full, not just it's id.
I'll look at modifying this.
PS: For all, the change into the breadcrumb module is still valid and required. The "safe" way to apply it is not to modify your existing module but instead to use a template override:
To revert, rename that file, the template override, to anything else than default.php and Joomla won't use it anymore
Category | Modules Front End | ⇒ | Modules Front End Plugins |
I have made a change to remove the faulty output from the schema.org system plugin. I have updated the testing instructions accordingly.
To test on live sites, which is the only good test: you should:
1 - Copy /modules/mod_breadcrumbs/tmpl/default.php
in this PR to /templates/<your_template>/html/mod_breadcrumbs/default.php
2 - Modify the file /plugins/system/schemaorg/src/Extension/Schemaorg.php, at line 386 and comment out the few following lines:
// We support Breadcrumb linking
// $breadcrumbs = ModuleHelper::getModule('mod_breadcrumbs');
//if (!empty($breadcrumbs->id)) {
// $webPageSchema['breadcrumb'] = ['@id' => $domain . '#/schema/BreadcrumbList/' . (int) $breadcrumbs->id];
//}
(Note the // added at the start of the lines, this disables the lines in question)
After that, you can test the pages again in either GSC or the Google Structured Data tester at https://search.google.com/test/rich-results
Status | Ready to Commit | ⇒ | Pending |
Amended file added as override. Commented out the lines as noted in plugins. A check at Google's rich results page shows no errors.
I also went into my GSC and attempted a validation there. Where it failed yesterday, today the fix was accepted.
So it looks like you may have nailed it with this patch! Thanks!!
I got an email from Google today to confirm that, by doing those 2 edits yesterday, the Breadcrumbs issue is resolved, so that patch is ready to roll.
@trogladyte Thank you for testing! Please mark your test successfully here: https://issues.joomla.org/tracker/joomla-cms/45316
I have tested this item ✅ successfully on 9e7ab37
Google confirms this patch works
Labels |
Removed:
RTC
|
If I interpret the result here correctly, we could actually remain schema.org compliant in terms of format and only fix the issue in the Schema.org plugin.
https://search.google.com/test/rich-results/result/r%2Fbreadcrumbs?id=EwKIKPmmknlvirxbbx74tg
Or am I missing something?
I think it would be a pity to move away from the general Schema.org format if Google can actually interpret it correctly.
Here in the developer docs and in the test above you can actually see that the problem was probably actually due to the missing name attribute in the schema.org plugin itself?
https://developers.google.com/search/docs/appearance/structured-data/breadcrumb
@weeblr can you look into this PR today following @LadySolveig advice? Perhaps it has then a chance to go into the upcoming 5.3.1
Labels |
Added:
Updates Requested
|
Category | Modules Front End Plugins | ⇒ | Front End Plugins |
I have reverted all changes in the module template. However, this does reset the tests count to zero.
Still this is not the solution Martina suggested. We don't need to remove it. We should stick to schema.org syntax (which google supports) and not go for google synstax and tell the rest: sorry, not supported.
The changes for the schema.org format are back again now by removing the changes from the modul. @weeblr May I ask why you want to remove this instead of repairing the broken functionality in the schema.org plugin itself. I mean, It seems that only the name attribute is missing here?
@LadySolveig Not sure what you mean about the module. There's no "google" or "schema.org" syntax, they are the same, simply some attributes are supported by Google to trigger rich results. The change I made initially organized the attribute differently, both versions are schema.org compliant. I just reverted the change as it was not needed, when it become apparent that the issue at hand was caused by the link output by the plugin.
As for the plugin output, ie: removing the link to the breadcrumb from the main @graph record, we don't know what exactly caused the problem at the start. The error is:
Top critical issues*
Missing field "itemListElement"
Not sure why you think adding a name would fix anything. I read the error message as "You can't have a link to breadcrumb from @graph, it has to be the real breadcrumb". If a name was missing, they would say that.
As the breadcrumb is output by the breadcrumb module (and I'm not getting into changing that), the fix is to remove the link.
That does not cause any problem of course, as the schema is still available in the page, which is perfectly fine.
@weeblr I'm sorry, I didn't catch that part. But that sounds to me more like a misconfiguration in the backend.
Could it be that there is a breadcrumb module in the backend that has not been assigned to a valid position? Or that two modules are set here on one page and the wrong one is being used here?
I have played it through here once on a page with Yootheme where the error occurred because the module was still activated but not assigned to a valid position and for me the error is already solved - purely by deactivating the incorrectly still active Bread Crumb module.
Perhaps you could have a look to see if this is also the case for you and give feedback here.
Improvements should definitely be made here in order to better intercept these mistakes. But I don't really see the advantage of completely removing the functionality for everyone as the final solution.
Improvements should definitely be made here in order to better intercept these mistakes. But I don't really see the advantage of completely removing the functionality for everyone as the final solution.
What are you talking about? what feature is removed?
Could it be that there is a breadcrumb module in the backend that has not been assigned to a valid position?
What does this have to do with that?
When you use the module, it outputs some breadcrumb structured data.
If the schema.org plugin is enabled, it links to that breadcumb markup from its own output. This is illegal, causes the error and should be removed.
No structured data is removed, no functionality is lost, the breadcrumb structured data is still present as it should.
Hello, why is it that no one is able to fix this yet? What was wrong with the previous solution that was implemented and worked?
@ARTIS-MEDIA
Can you please check if you either have a published breadcrumb module that is not assigned to a valid position in your template or two breadcrumb modules on the same page.
Step 2 - Does deactivating the possibly invalid breadcrumb module already solve the problem?
Please share your feedback so that we can better assess the situation. Thank you very much!
Could it be that there is a breadcrumb module in the backend that has not been assigned to a valid position?
What does this have to do with that?
If you obviously have a breadcrumb module and the breadcrumb is also displayed correctly in the GSC, the correct ID should also be assigned here.
In all cases that I have seen so far with this error, a second module (usually the standard breadcrumb module) was inadvertently published incorrectly and the wrong ID was simply assigned because there were two.
@ARTIS-MEDIA
Can you please check if you either have a published breadcrumb module that is not assigned to a valid position in your template or two breadcrumb modules on the same page.
Step 2 - Does deactivating the possibly invalid breadcrumb module already solve the problem?
Please share your feedback so that we can better assess the situation. Thank you very much!
Breadcrumbs is published in helix ultimate under Breadcrumb.
Disabling Breadcrumbs solves the problem.
I only have one Breadcrumb.
@QuyTon - trying to test this PR and using https://search.google.com/test/rich-results/result to test a broken page and clearing cache of course - but can't seem to confirm it working, am I doing something wrong?