Requirements

  • Joomla 4, 5, or 6
  • Content - Load Modules plugin (ships with Joomla, must be enabled)

Installation

  1. Download the plugin package
  2. In your Joomla administrator, go to System → Install → Extensions
  3. Upload the package file and click Upload & Install
  4. Go to System → Manage → Plugins
  5. Search for Content - Included and enable it

That's it. No additional components, no database setup, no configuration required to get started.

How It Works

Content - Included works by injecting Joomla module tags into your article content at render time. It does not modify your articles in the database — the injection happens on the fly when a page is served.

Rules are evaluated against each article's category and tags. When a match is found, the plugin inserts a {loadmoduleid} or {loadposition} tag at the configured position. Joomla's native Content - Load Modules plugin then renders those tags into actual module output.

Configuration

All configuration is managed from the plugin settings page. Go to System → Manage → Plugins, find Content - Included, and open it.

Creating a Rule

Click + (Plus) to create a new insertion rule. Each rule has the following settings:

Categories

Select one or more content categories this rule applies to. An article must belong to one of the selected categories for the rule to fire.

Include Subcategories When enabled, the rule will also apply to all descendant categories of the selected categories — recursively. This means a single rule can cover your entire content tree without needing to select every subcategory individually.

Tag Filtering

Tags Select one or more article tags. If set, the article must have at least one of these tags for the rule to apply. Leave empty to match all articles in the selected categories regardless of tags.

Ignore Tags Select one or more article tags. If an article has any of these tags, the rule will be skipped for that article — even if it matches the category and Tags settings. Useful for suppressing insertions on specific articles without removing them from the category.

Insertion Position

Position Where in the article the module will be inserted. Options:

  • Before Content — inserted immediately before the article text
  • After Content — inserted immediately after the article text
  • After Nth Item — inserted after a specific paragraph or heading

Nth Position (visible when Position is set to After Nth Item) The number of the paragraph or heading after which the module will be inserted. For example, a value of 2 inserts the module after the 2nd matching item.

Nth Item Type (visible when Position is set to After Nth Item) Whether to count paragraphs or headings.

  • Paragraph — counts closing </p> tags
  • Heading — counts closing heading tags at the specified level

Nth Heading Level (visible when Nth Item Type is set to Heading) The heading level to count — H1 through H6.

Note: If the article does not contain enough paragraphs or headings to reach the Nth position, the insertion is skipped silently for that article.

What to Insert

Include Type Whether to insert a module by ID or by position.

  • Module ID — inserts a specific module by its ID using {loadmoduleid}
  • Position — inserts all modules assigned to a named position using {loadposition}

Include ID (visible when Include Type is set to Module ID) Select the module to insert from the list of published modules on your site.

Include Position (visible when Include Type is set to Position) Enter the position name to insert.

Rule Order

Rules are applied in the order they appear in the settings panel. Drag and drop rules to change the order in which they are evaluated and applied.

Practical Examples

Insert an AdSense module after the 2nd paragraph in all Blog articles

  1. Create a new rule
  2. Set Categories to your Blog category
  3. Enable Include Subcategories if your blog has subcategories
  4. Set Position to After Nth Item, Nth Position to 2, Nth Item Type to Paragraph
  5. Set Include Type to Module ID and select your AdSense module
  6. Save

Insert a promotional banner before all articles tagged "sponsored"

  1. Create a new rule
  2. Set Categories to all applicable categories
  3. Set Tags to "sponsored"
  4. Set Position to Before Content
  5. Set Include Type to Module ID and select your banner module
  6. Save

Suppress an insertion on specific articles

  1. On the rule you want to suppress, set Ignore Tags to a tag such as "no-ads"
  2. Add the "no-ads" tag to any article where the rule should not apply
  3. Save

Troubleshooting

The module isn't appearing in my articles

  • Confirm the Content - Load Modules plugin is enabled
  • Confirm the module itself is published and assigned to All pages or the relevant menu items
  • Check that the article's category matches the rule's category selection
  • If using tag filtering, confirm the article has the required tags

The module appears on articles I don't want it on

  • Use Ignore Tags to suppress the rule on specific articles
  • Review your category selection — if Include Subcategories is enabled, the rule may be matching more categories than intended

The Nth insertion isn't appearing

  • The article may not have enough paragraphs or headings to reach the Nth position — the insertion is silently skipped in this case
  • Confirm Nth Item Type and Nth Heading Level match the actual HTML structure of your article

Technical Notes

  • The plugin hooks into onContentPrepare and runs on com_content.article and com_content.featured contexts only
  • Injections are not written to the database — articles are never modified
  • Rule lookups and category descendant resolution are cached to minimize database queries on repeated page loads
  • The plugin does not run in the administrator context

Why is this software free?

I’m ditching the freemium game and giving this software to the Joomla crowd for free. It’s a nod to “Jumla”—Swahili for “all together”—because fragmentation sucks, and I’d rather focus on innovation and paid gigs. Use it, build with it, and if you need custom work, I’m super into that.

What's The Catch?

There isn’t one! I’m all about building tools that empower the Joomla community and spark creativity. This software’s free because I’d rather see it in your hands - fueling awesome projects. If you really feel like paying something, I’d appreciate a review in the Joomla Extension Directory—your feedback means a lot!