Understanding the Joomla directory structure

Understanding the Joomla directory structure

If you really want to work with Joomla and develop new functionalities for it understanding the Joomla directory structure can be very handy. This knowledge will benefit you, even though it can be a little boring, when you start to do more advanced Joomla modifications, such as: create your own extensions or templates.

Basically we have these folders: root,administrator,cache, components, images, includes, installation, language, libraries, logs, media, modules, plugins, templates, tmp.


Root: When you first place the Joomla package on your hosting the root directory contains an index.php file that will run the Joomla installer. Once installed Joomla, this index.php page will pick up your settings in the configuration.php file and execute your main Joomla engine.

Administrator: This is evident when you look at the sub-folders under the "administrator" folder. The administrator folder contains many of the same sub-folders as the top-level folder, including: cache, components, help, includes, language, modules, templates, and the file index.php. In this directory you have all files for your Joomla administrator web interface (components, templates, modules, plugins, etc). The Administrator interface itself is a Joomla sub-web site, and has a complete user interface.

Cache: This folder holds all the Joomla cache files. The cache folder is very easy to understand.  In a dynamic website, the system does a lot of work to pull together the information to display a page. For example, if the page is displaying a blog layout, the system has to access the database to get the articles for the blog; layout the articles on the page; and load the desired modules for the page. To increase performance, Joomla will store popular pages requested in this directory, so they don’t have to be re-downloaded by PHP and MySQL for each time they are requested.

Components: This directory contains all Joomla extensions, except those for your administrator interface. By default, Joomla has some extensions available, such as login, poll, registration, search, newsfeeds, and others. They are ready to go, and can already displayed them in your website front-end.

Images: This folder by default stores images used for your extensions and plugins. It contains all images used by the administrator interface as well as images that have been uploaded to present with article content. Within it you find the \smiles folder that contains emoticons; the \stories folder that has images; and the \banners folder that holds some sample banner files.

Includes: In this directory you find core files of Joomla. It contains PHP execution files that automate inclusion of content.

Installation: This folder holds the needed files for Joomla installation. It should be deleted after installed Joomla.

Language: This folder holds all language files. Joomla stores translations in a simple INI-based file format. All languages files are contained in it own folder and have filename prefix that matches the folder name. For example, all language files for English template from the country Great Britain are stored in a folder named eng-GB and all of them has a prefix eng-GB.

Libraries:  this directory holds your entire Joomla system and third-party libraries used in your website. A Joomla website uses the core libraries contained inside the \libraries folder. Within this folder you find the \joomla folder where you will see different implementations areas (such as file system, application, database,  etc). These implementations make up the functional parts of your application.  Its library has its own subfolder in this folder to aid in organization.

Logs: Where Joomla stores its log files.

Media: Traditionally, Joomla extensions stored all their assets (images, javascript, css, flash files…) inside the extension’s folder. However, because these files are supposed to be publicly accessible, and all other files should stay hidden, that doesn’t really make sense. Extensions can now use the /media folder.

Modules: This folder contains all installed front-end modules. It holds the modules available for display by a template. By default Joomla comes some modules, such as banners, breadcrumbs, latest news, login, newsflash, poll, random image, others. Modules are placed like panels into a Joomla template. They often encapsulate or provide the front-end display for related component. Like a component, a module is a type of add-on extension.

Plugins: The folder contains all your plugins files. As well as extensions and modules, plugins are a type of add-on extension. However, they work at a lower level than components.

Templates: This directory has all your frontend template files. You can notice that the name of each template subfolder must match the template it contains. By default Joomla brings some templates already done, and ready for use.

Tmp: The "tmp" folder, as you might guess, is a place for the system to store files on a temporary basis. One of the most frequent uses of this folder is when extensions are installed. When a new extension is installed, a copy of the extension's archive file is copied into the "tmp" folder and then is unpacked into the correct Joomla folders.