Hub managers

Extensions

Everything Hubzero puts on a page comes from an extension. The platform ships with a large set of them, and a hub can add its own. This section covers the four administrator screens that manage extensions, all reached from the Extensions menu in the administrator interface.

Screen What it manages
Extension Manager Enabling, disabling and updating every installed extension
Module Manager Module instances, their positions and their page assignments
Plug-in Manager Plugin state, access level and run order
Template Manager Template styles, the default template, and template source files

A fifth entry, Language Manager, opens com_languages. It has its own chapter, Language Manager, among the component chapters.

This section, and the one it is confused with

This section is about which extensions exist and where they sit. Creating a module and putting it in a template position. Turning a plugin on. Choosing the template the site renders in. Adding a hub's own code from a git repository.

Configuring is about values: the settings inside an extension once it exists and is switched on.

Two screens carry both jobs, and that is where the confusion starts. The Module Manager creates a module and holds its parameters; the Plug-in Manager enables a plugin and holds its parameters. In this book the parameters are described in the Configuring chapters — Modules and Plugins — and everything else here.

The extension types

Components

A component is an application. It has its own controllers, models, views, database tables, administrator screens and access rules, and it renders the main body of the page. Exactly one component runs per request; a menu item is essentially a switch that decides which one. Components live in core/components/, and a hub's own components in app/components/. Their names begin with com_: com_resources, com_groups, com_publications.

Components are not created or removed from the Extensions screens. They are enabled and disabled from the Extension Manager, configured from their own Options button, and given menu items from the menu manager.

Modules

A module is a small block of output placed around the component, in a named position defined by the template: a login box, a breadcrumb trail, a site notice, a list of the newest resources. Modules live in core/modules/ and are named mod_login, mod_breadcrumbs, and so on. One hundred ship with the core, 78 for the site and 22 for the administrator interface.

Unlike a component, a module is instantiated. The same mod_custom code can back a dozen separate blocks, each with its own title, position, access level and set of pages. That is what the Module Manager edits.

Plugins

A plugin answers events. Something in the platform triggers an event — a user logs in, a resource is saved, a page of content is about to be rendered — and every enabled plugin that implements a handler for it runs, in order. Plugins live in core/plugins/, grouped into folders by the kind of event they answer: authentication, content, members, groups, cron, system, and about thirty more.

Plugins also supply whole tabbed sections of some components. The tabs on a group page, on a member profile and on a project are each a plugin in the groups, members and projects folders.

Templates

A template controls presentation. It supplies index.php (the page skeleton), stylesheets, scripts, the list of module positions it offers, and optional overrides of any component or module layout. Templates live in core/templates/, and a hub's own in app/templates/.

A template is not the same thing as a style. One template can have several styles, each a saved set of that template's parameters, and styles are what you assign to the site or to individual menu items. See Templates.

Languages

A language pack is a set of .ini files of key/value pairs, one file per extension, plus an XML manifest describing the language. Every string the interface renders comes from one of these keys, which is why this documentation quotes labels as the language files spell them. Language packs cover both the site and the administrator interface.

Where extensions live

Hubzero looks for an extension in the hub's own directory first and falls back to the core:

Type Hub Core
Components app/components/com_name/ core/components/com_name/
Modules app/modules/mod_name/ core/modules/mod_name/
Plugins app/plugins/folder/name/ core/plugins/folder/name/
Templates app/templates/name/ core/templates/name/

Nothing in core/ should be edited on a running hub. To change core behaviour, put a replacement of the same name under app/; it wins. The Extension Manager calls those hub-side additions Custom Extensions and installs them from a git repository.

Rewritten and checked against 2.4-main @ 35f103b1b3 on 2026-09-10.