I encountered a routing issue with SP Page Builder 6.8.0 where it was accepting article title-derived slugs that were not the article's actual Joomla alias.
For example:
Article ID: 123
Title: Best Products for 2026
Alias: best-baby-products
SP Page Builder would accept:
/best-products-for-2026
even though the only valid Joomla alias was:
/best-products
The invalid URL was being interpreted by SP Page Builder's dynamic-content routing rather than returning a 404. It could also produce:
Warning: foreach() argument must be of type array|object, null given in
PageSeoSettings.php on line 214
We traced the behavior to components/com_sppagebuilder/router.php, which can look up Joomla articles by URL slug.
We modified the router so that Joomla articles are matched only against their actual #content.alias, rather than falling back to a slug generated from the article title. After this change, invalid title-derived URLs correctly return 404 while the actual aliases continue working.
We also found older internal Joomla links containing articleID:title-derived-slug rather than articleID:actual-alias. We updated those links to use the current aliases.
So there appear to be two issues worth investigating:
The SP Page Builder router accepts a title-derived slug even when it doesn't match the Joomla article alias.
PageSeoSettings.php attempts to foreach null collection data instead of gracefully handling the invalid route.
This became apparent with SP Page Builder 6.8.0, although I can't confirm which version introduced it.