Updates Requested bug PR-5.3-dev Pending

User tests: Successful: Unsuccessful:

avatar weeblr
weeblr
11 Apr 2025

Pull Request for Issue #45277.

Summary of Changes

[Updated 2025-04-18]

  • Changed JSON-LD output of breadcrumb module to be compliant with Google specification
  • Changed JSON-LD output of schema.org system plugin to remove the id of the breadcrumb schema from the module

Testing Instructions

Actual result BEFORE applying this Pull Request

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"
            }
        },

Expected result AFTER applying this Pull Request

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

Documentation Changes Required

avatar weeblr weeblr - open - 11 Apr 2025
avatar weeblr weeblr - change - 11 Apr 2025
Status New Pending
avatar joomla-cms-bot joomla-cms-bot - change - 11 Apr 2025
Category Modules Front End
avatar QuyTon QuyTon - change - 11 Apr 2025
The description was changed
avatar QuyTon QuyTon - edited - 11 Apr 2025
avatar exlemor
exlemor - comment - 11 Apr 2025

@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?

avatar weeblr
weeblr - comment - 11 Apr 2025

@exlemor Start by veriyfing the page source code. What is the output? I provided examples of good and bad output.

avatar exlemor
exlemor - comment - 11 Apr 2025

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.

avatar weeblr
weeblr - comment - 11 Apr 2025

@exlemor

  1. what does 4SEO has to do with any of this?
  2. Follow the test instructions. The Google structured data tester is not a proper way to test the outcome of this. It never detected the problem.

The valid test result is when you have the bad code output before the patch and the correct source code output after the patch.

avatar exlemor exlemor - test_item - 11 Apr 2025 - Tested successfully
avatar weeblr
weeblr - comment - 11 Apr 2025

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

avatar tecpromotion tecpromotion - change - 12 Apr 2025
Title
Fix [45277]: Invalid breadcrumb module json-ld output
[5.3]: Invalid breadcrumb module json-ld output
avatar tecpromotion tecpromotion - edited - 12 Apr 2025
avatar tecpromotion tecpromotion - change - 12 Apr 2025
Title
[5.3]: Invalid breadcrumb module json-ld output
[5.3] Invalid breadcrumb module json-ld output
avatar tecpromotion tecpromotion - edited - 12 Apr 2025
avatar tecpromotion tecpromotion - test_item - 12 Apr 2025 - Tested successfully
avatar tecpromotion
tecpromotion - comment - 12 Apr 2025

I have tested this item ✅ successfully on bad9f2a


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/45316.

avatar tecpromotion
tecpromotion - comment - 12 Apr 2025

Before Patch
Bildschirmfoto 2025-04-12 um 10 43 49

After Patch
Bildschirmfoto 2025-04-12 um 10 43 18

avatar tecpromotion tecpromotion - change - 12 Apr 2025
Status Pending Ready to Commit
avatar tecpromotion
tecpromotion - comment - 12 Apr 2025

RTC


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/45316.

avatar weeblr
weeblr - comment - 12 Apr 2025

Ideally we should have testers who can confirm now that this fixes the issue with the Google search console.

Requires someone who:

  • has a site with GSC reporting the issue
  • willing to manually apply the change to their live site, so that GSC can confirm they're happy with it.

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

avatar HMD19750
HMD19750 - comment - 13 Apr 2025

I have a site where GSC has issues with 14 articles.
How can I apply the patch? I currently run Joomla 5.2.4

avatar weeblr
weeblr - comment - 14 Apr 2025

@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.

avatar HMD19750
HMD19750 - comment - 16 Apr 2025

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!

avatar weeblr
weeblr - comment - 17 Apr 2025

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.

avatar HMD19750
HMD19750 - comment - 17 Apr 2025

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.

avatar weeblr
weeblr - comment - 17 Apr 2025

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.

avatar ARTIS-MEDIA
ARTIS-MEDIA - comment - 17 Apr 2025

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"

avatar QuyTon QuyTon - change - 17 Apr 2025
Labels Added: RTC bug PR-5.3-dev
avatar trogladyte
trogladyte - comment - 17 Apr 2025

When can we expect a patch for this? I'd like to clear this error from GSC.

avatar dautrich
dautrich - comment - 17 Apr 2025

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.

avatar trogladyte
trogladyte - comment - 17 Apr 2025

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).

image

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.

avatar HMD19750
HMD19750 - comment - 17 Apr 2025

I had exactly the same for my website.

avatar weeblr
weeblr - comment - 18 Apr 2025

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:

image

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:

image

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:

  • copy the fixed "default.php" file from this PR into /templates/<your_template>/html/mod_breadcrumbs/default.php

To revert, rename that file, the template override, to anything else than default.php and Joomla won't use it anymore

avatar joomla-cms-bot joomla-cms-bot - change - 18 Apr 2025
Category Modules Front End Modules Front End Plugins
avatar weeblr weeblr - change - 18 Apr 2025
The description was changed
avatar weeblr weeblr - edited - 18 Apr 2025
avatar weeblr
weeblr - comment - 18 Apr 2025

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

avatar QuyTon QuyTon - change - 18 Apr 2025
Status Ready to Commit Pending
avatar trogladyte
trogladyte - comment - 18 Apr 2025

@weeblr

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!!

avatar trogladyte
trogladyte - comment - 19 Apr 2025

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.

avatar QuyTon
QuyTon - comment - 19 Apr 2025

@trogladyte Thank you for testing! Please mark your test successfully here: https://issues.joomla.org/tracker/joomla-cms/45316

avatar trogladyte trogladyte - test_item - 19 Apr 2025 - Tested successfully
avatar trogladyte
trogladyte - comment - 19 Apr 2025

I have tested this item ✅ successfully on 9e7ab37

Google confirms this patch works


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/45316.

avatar weeblr weeblr - change - 24 Apr 2025
Labels Removed: RTC
avatar dautrich
dautrich - comment - 17 May 2025

@QuyTon What is the status of this PR? Do we (only) need one more test to get it into 5.4? Maybe @exlemor can repeat his previous test?
There is at least one user in the German Joomla forum waiting for the patch.

avatar LadySolveig
LadySolveig - comment - 17 May 2025

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?
grafik
https://developers.google.com/search/docs/appearance/structured-data/breadcrumb

avatar LadySolveig
LadySolveig - comment - 17 May 2025

We could also set the name twice, at least the Google Validator seems to have no problem with that. Google seems to be able to interpret it correctly. Only if the name is missing does it definitely have a problem
grafik
grafik

avatar bembelimen
bembelimen - comment - 17 May 2025

@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

avatar weeblr weeblr - change - 19 May 2025
Labels Added: Updates Requested
avatar joomla-cms-bot joomla-cms-bot - change - 19 May 2025
Category Modules Front End Plugins Front End Plugins
avatar weeblr
weeblr - comment - 19 May 2025

I have reverted all changes in the module template. However, this does reset the tests count to zero.

avatar bembelimen
bembelimen - comment - 21 May 2025

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.

avatar LadySolveig
LadySolveig - comment - 21 May 2025

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?

avatar weeblr
weeblr - comment - 22 May 2025

@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.

avatar LadySolveig
LadySolveig - comment - 24 May 2025

@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.

avatar weeblr
weeblr - comment - 24 May 2025

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.

avatar ARTIS-MEDIA
ARTIS-MEDIA - comment - 31 May 2025

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?

avatar LadySolveig
LadySolveig - comment - 18 Jun 2025

@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!

avatar LadySolveig
LadySolveig - comment - 18 Jun 2025

@weeblr

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.

avatar ARTIS-MEDIA
ARTIS-MEDIA - comment - 20 Jun 2025

@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.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/45316.

Add a Comment

Login with GitHub to post a comment