Feature Webservices PR-6.2-dev Pending

User tests: Successful: Unsuccessful:

avatar itsnewtjam
itsnewtjam
15 Sep 2025

Summary of Changes

This change modifies ModuleHelper to process site modules when running in ApiApplication context. Currently the /content/articles/{id} Web Services endpoint prepares the article content (e.g. {loadmodule} tags), but since ModuleHelper filters by the Client ID, no modules are rendered under ApiApplication.

This is a very basic way to address this, open to going about it a different way if there are implications I didn't think of!

Testing Instructions

Retrieve an article with modules rendered (assuming article ID 1 uses a load module tag of some sort)
GET /api/index.php/v1/content/articles/1

  • Expected: Returns article data with modules rendered in the article text

Actual result BEFORE applying this Pull Request

Despite the endpoint preparing article content, ModuleHelper filters modules by Client ID, so no modules are rendered under ApiApplication.

Expected result AFTER applying this Pull Request

ModuleHelper serves site modules when under ApiApplication, resulting in modules being rendered in article content.

Link to documentations

Please select:

  • Documentation link for docs.joomla.org:

  • No documentation changes for docs.joomla.org needed

  • Pull Request link for manual.joomla.org:

  • No documentation changes for manual.joomla.org needed

avatar itsnewtjam itsnewtjam - open - 15 Sep 2025
avatar itsnewtjam itsnewtjam - change - 15 Sep 2025
Status New ⇒ Pending
avatar joomla-cms-bot joomla-cms-bot - change - 15 Sep 2025
Category ⇒ Libraries
avatar itsnewtjam itsnewtjam - change - 15 Sep 2025
Labels Added: PR-5.4-dev
avatar muhme
muhme - comment - 16 Sep 2025

@itsnewtjam Thank you for your contribution 👍 Since 5.4.0 is already in feature freeze mode, this PR needs to be moved to 6.1-dev. If you could make the rebase yourself, that would be great. Otherwise, we can support it.

avatar joomla-cms-bot joomla-cms-bot - change - 16 Sep 2025
Category Libraries ⇒ Repository Administration com_admin SQL
avatar richard67 richard67 - change - 16 Sep 2025
Title
…
Serve site modules in ModuleHelper when in API context
[6.1] Serve site modules in ModuleHelper when in API context
avatar richard67 richard67 - edited - 16 Sep 2025
avatar joomla-cms-bot joomla-cms-bot - change - 16 Sep 2025
Category Repository Administration com_admin SQL ⇒ Libraries
avatar Rajat-1804 Rajat-1804 - test_item - 31 Jan 2026 - Tested successfully
avatar Rajat-1804
Rajat-1804 - comment - 31 Jan 2026

I have tested this item ✅ successfully on a7b8c98

I have tested this item ✅ successfully

Environment: Windows/XAMPP, Joomla 6.1-dev

Test Setup:

  1. Created article with {loadmodule mod_custom,Test Module}
  2. Created published custom module "Test Module" with content "Hello from Module!"
  3. Generated API token for testing

Before PR:
❌ GET /api/v1/content/articles/1
Response: {loadmodule mod_custom,Test Module} (plain text, not rendered)

After PR:
✅ GET /api/v1/content/articles/1
Response: Hello from Module! (module content rendered)

Additional Tests:
✅ Site frontend - modules render normally (no regression)
✅ Admin backend - modules render normally (no regression)
✅ API module rendering respects access levels
✅ Module caching works correctly in API context

Result: Works perfectly! Modules now render in API responses, enabling headless Joomla and mobile app use cases.


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

avatar HLeithner
HLeithner - comment - 17 Mar 2026

This pull request has been automatically rebased to 6.2-dev.

avatar HLeithner HLeithner - change - 17 Mar 2026
Title
…
[6.1] Serve site modules in ModuleHelper when in API context
[6.2] Serve site modules in ModuleHelper when in API context
avatar HLeithner HLeithner - edited - 17 Mar 2026
avatar laoneo laoneo - change - 1 Jun 2026
Labels Added: Feature Webservices PR-6.2-dev
Removed: PR-5.4-dev
avatar ssnobben
ssnobben - comment - 21 Aug 2026

DId this get tested and merged?

avatar alikon
alikon - comment - 21 Aug 2026

no, it still need test

avatar alikon
alikon - comment - 25 Aug 2026

i've got
image

so no html from custom module

avatar alikon alikon - test_item - 25 Aug 2026 - Tested unsuccessfully
avatar alikon
alikon - comment - 25 Aug 2026

I have tested this item 🔴 unsuccessfully on 605b25d


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

avatar alikon
alikon - comment - 25 Aug 2026

I have tested this item 🔴 unsuccessfully on 605b25d


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

avatar joomla-cms-bot joomla-cms-bot - change - 25 Aug 2026
Category Libraries ⇒ Libraries Front End Plugins
avatar itsnewtjam
itsnewtjam - comment - 25 Aug 2026

So the solution originally used in this PR is now being cut off by #45357, but then in api/components/com_content/src/View/Articles/JsonapiView.php it's specifically dispatching onContentPrepare when preparing article items for the API.

protected function prepareItem($item)
{
if (!$item) {
return $item;
}
$item->text = $item->introtext . ' ' . $item->fulltext;
// Process the content plugins.
PluginHelper::importPlugin('content');
Factory::getApplication()->triggerEvent('onContentPrepare', ['com_content.article', &$item, &$item->params]);

Given other changes since I first created this PR, I've modified the approach. I've restored the ModuleHelper, removed that check in the LoadModule plugin, and created an override for loadRenderer in JsonapiDocument to set the renderer document type to HTML. Those two changes seem to now be sufficient to serve the module content.

Add a Comment

Login with GitHub to post a comment