
Although Joomla is not a popular source code used for website development, Joomla is still an Open CMS with full power as well as a clear structure & MVC model to develop applications for businesses.
# Understand Joomla from basic to advanced # Customize Joomla in the most detailed way # Understand the operating principles # Understand the advantages compared to other source codes
Joomla is a powerful open source CMS, suitable for building business websites, e-commerce and personal blogs. The course helps students master the platform and practice directly.
Learners will be guided step by step from Joomla installation, configuration, content management to template development and functionality extension. This is an ideal choice for both beginners and programmers who want to improve their skills.
Joomla is one of the most popular CMS in the world with a large community, many extensions and high customization capabilities. Learning Joomla helps save costs and time when developing websites.
Compared to programming a website from scratch, Joomla provides a solid, scalable, highly secure platform that is trusted by many businesses. Proficiency in Joomla opens up career opportunities in the field of web design and development.
The course is suitable for beginners, IT students, web design freelancers, as well as businesses who want to manage their own websites.
Anyone who wants to build or manage a website can join. The course content is designed to be flexible, accessible, and suitable for people without any programming background.
The basics focus on Joomla installation, article management, menu creation, user permissions and template installation.
Students will become familiar with the administration interface, understand the Joomla structure and master the skills to create a simple website. This is an important foundation to move on to the advanced sections.
Students are exposed to extension development, SEO optimization, plugin integration, and template customization according to actual needs.
In addition to technical knowledge, students are also instructed on how to operate a professional Joomla website, manage hosting, security and handle common errors.
Once you have mastered Joomla, you can build your own website, take on web design projects for clients, or apply for a web developer position.
Joomla is not only a personal skill but also a tool that brings business value, helping to deploy websites quickly, save costs and expand according to needs.
Joomla is more flexible than WordPress in terms of permissions and security management, and is easier to use than Drupal for beginners.
Thanks to its balance of ease of use and powerful features, Joomla has become a popular choice for small and medium-sized businesses, as well as mid-sized web projects.
The demand for recruiting personnel proficient in CMS in general and Joomla in particular is still high, especially at web design companies and marketing agencies.
Learners can work as freelancers, open web design services or work as web administrators for businesses. This is a skill that brings sustainable income and career development opportunities.
Joomla is considered user-friendly. Even if you have no programming background, you can still quickly get acquainted and create a complete website.
Lectures are presented visually, with many practical examples. Learners can progress rapidly after just a few focused lessons.
The curriculum is designed from basic to advanced, combining theory and practice on real projects, helping knowledge to be remembered for a long time.
Students will build and manage a complete website using Joomla, thereby accumulating practical experience and confidently implementing their own projects.
This content will give you a good overview of Joomla, why it remains a powerful choice for website development in today's technological landscape, and help you determine whether Joomla is the right platform for your goals and skills.
Joomla is a completely free and open source Content Management System (CMS), written in PHP and using MySQL database management system. However, defining Joomla as just a CMS would not show its full power. More precisely, Joomla is a powerful web application framework, providing a solid foundation for building not only regular websites but also complex web applications.
In a technological world where new platforms are constantly emerging, Joomla remains a leader thanks to its irreplaceable core strengths:
Outstanding flexibility: This is the most outstanding advantage of Joomla. You are not limited to a specific type of website. With Joomla, you can build almost anything: from a simple personal blog, an art portfolio, a large-scale news website, to complex e-commerce systems, internal social networks, or information portals for businesses and educational institutions.
Advanced User Management (ACL - Access Control List): This is the "secret weapon" that makes Joomla stand out from many other CMS. Joomla's ACL system allows you to create user groups and assign access, editing, and publishing rights to extremely detailed content. You can specify which user groups can view which articles, who can edit which modules, or who has access to a specific component. This makes Joomla an ideal choice for community websites, news sites with multiple editorial boards, or internal systems that require strict security and authorization.
Native Multilingual Support: If your project is aimed at an international audience, Joomla is a perfect choice. The ability to manage and display multilingual content is built into Joomla's core, allowing you to build a complete multilingual website without having to install complex and sometimes unstable extensions.
Long-standing and vibrant community: Launched in 2005, Joomla has a global community of millions of users and developers. This ensures that the platform is constantly being improved, with bug fixes and security updates being released regularly. More importantly, it offers a huge Joomla Extensions Directory with thousands of components, modules, and plugins, making it easy to add almost any feature to your website.
Understanding Joomla as not just a “web builder” but a “development platform” opens up a whole new perspective. It is not just for people who want to drag and drop to create a website, but also a potential playground for programmers who want to build highly scalable, secure and customizable solutions.
Choosing the right CMS is one of the most important decisions when starting a website project. Each platform has its own strengths and weaknesses. Here is a detailed comparison between Joomla, WordPress and Drupal - the three giants of the open source CMS world.
Criteria | WordPress | Joomla | Drupal |
Ease of use | Very easy, beginner friendly. | On average, the learning curve is a bit steeper than WordPress. | Difficult, requires technical and programming knowledge. |
Customization capabilities | High, through thousands of plugins and themes. | Very high, flexible in creating different types of content and layouts. | Extremely high, a true CMF (Content Management Framework). |
User Management (ACL) | Basically, plugins are needed to extend. | Very powerful and detailed, built into the core. | Very strong, one of the core strengths. |
Multilingual support | Plugin required (eg WPML, Polylang). | Very powerful, built into the kernel. | Very powerful, built into the kernel. |
SEO | Well, need plugins (eg Yoast SEO, Rank Math) for full optimization. | Good, built-in basic SEO tools, expandable with extensions. | Good, provides powerful modules for SEO optimization. |
Security | Pretty good, but popular target for hackers due to popularity. Requires proactive security. | Well, the community is always quick to release security patches. | Very good, trusted by government organizations and large businesses. |
Community & Amenities | The world's largest. | Big and old. | Large and very technical. |
Expense | Free (source code), cost depends on hosting, paid theme/plugin. | Free (source code), cost depends on hosting, paid extensions/templates. | Free (source code), development and maintenance costs are usually higher. |
Suitable Object | Blog, small and medium business website, simple news site, beginners. | Community website, news site, online magazine, multilingual website, e-commerce. | Government websites, universities, complex information systems, projects requiring high level security. |
So, when should you choose Joomla?
Choose WordPress when: You need a fast, easy-to-manage website, especially a blog or company profile. You want a wide selection of beautiful pre-made themes and don’t mind installing lots of plugins to expand functionality.
Choose Joomla when: Your project requires complex user permissions (e.g., a news site with multiple levels of editors, a site that allows members to post). You need a powerful multilingual website from the start. You want a balance between customization power and a friendly admin interface, without the complexity of Drupal.
Choose Drupal when: Security is a top priority. Your website has a highly complex data structure with many nested relationships. You are building a large-scale, high-performance system and have a team of professional programmers to deploy and maintain it.
Learning Joomla is more than just learning a skill; it opens up many different career paths in the web industry. No matter who you are or what your goals are, Joomla has a path to suit you. Identifying which group you fall into will help you focus on the knowledge you need most.
End-users: These are non-technical people. You might be a student who wants to create a portfolio, a small business owner who wants to manage their own e-commerce site, a blogger, or a marketer who needs to create simple landing pages. Your goal is to use Joomla as a tool to create and update content quickly without touching any code.
Web Administrator: Your role is to “caretaker” of one or more Joomla websites. Daily tasks include updating content, managing users, installing and configuring extensions, performing backups, updating versions, and ensuring the website is running smoothly. You need to have a deep understanding of Joomla’s structure and settings.
Web Designer: You are the one who brings a website to life, focusing on the interface and user experience (UI/UX). Your skills include customizing CSS, creating unique layouts, and working with Joomla template frameworks (like Gantry, T3, Helix) to create beautiful, responsive, and unique interfaces.
Joomla Developer: This is the highest level. You don’t just use what’s available, you create it. You dig deep into Joomla’s PHP source code, developing custom components, modules, and plugins to solve specific business problems that the available extensions can’t meet. You understand Joomla’s MVC architecture and know how to write code according to its standards.
By outlining these “career paths,” you can see that learning Joomla is about more than just creating a website. It can be the start of a steady job or a freelance career in the vibrant web industry.
Summary: To avoid being overwhelmed, we have outlined a clear learning path through 4 stages. This path will help you systematize your knowledge, going from the most basic concepts to confidently building and programming complex functions for Joomla websites.
Learning a powerful platform like Joomla can be confusing for beginners. Where to start? What to learn first? The learning path is designed to follow a natural cycle: Understand -> Do -> Improve -> Create . This structure helps you build knowledge sequentially, manages expectations, and gives you a clear sense of progress at each stage.
Objective: Understand "What is Joomla and how its components work together". This is the foundation stage, which determines the solidity of all the knowledge that follows.
Successfully installed Joomla on your personal computer (localhost).
Log in and get familiar with the admin area (Administrator).
Understand the definition, role, and relationship of core concepts: Article, Category, Menu, Module, Component, Plugin, and Template.
Objective: Apply the theory learned to a real-world project to turn knowledge into skills. This phase focuses on "doing".
Choose a simple project to practice on, for example a personal blog or a company profile website.
Create your own category structure, write and present your articles.
Build a navigation menu system for the website.
Find, install and configure basic and necessary extensions such as contact form, advanced editor, new post display module.
Install and perform basic customizations on an existing template.
Goal: Take your website from “working” to “working well.” This phase focuses on making your website faster, more secure, and more search engine friendly.
Learn how to use more advanced extensions for SEO, security, and page speed.
Perform basic on-page SEO techniques right in Joomla: enable friendly URLs, customize titles and meta descriptions.
Learn and implement important security measures: update regularly, use strong passwords, and back up regularly.
Discover the power of ACL permissions for efficient user management.
Goal: Break the limits of what is available and start creating your own solutions. This is the stage for those who want to pursue the path of professional Joomla programmer.
Learn about MVC (Model-View-Controller) architecture - the foundation of extension development in Joomla.
Learn how to create a simple "Hello World" module to understand the structure of an extension.
Master the "template override" technique to customize the look and feel of components and modules without interfering with the original files.
Start learning about Joomla API to interact with the database and core functions of the system.
This roadmap ensures that whether you start with the goal of "learn to make a Joomla website" or aim for "learn Joomla programming", you have a clear path to follow, building your knowledge steadily and not getting lost.
Summary: This is the first and most important step. We will guide you in detail, with illustrations, how to install Joomla on your personal computer (localhost) for safe practice and on real hosting to bring your website to the world.
Before you can build a website, you need an environment for Joomla to run in. There are two main options:
1. Localhost (Local server):
Localhost turns your personal computer into a web server. It's the perfect environment to learn, test, and develop websites without an internet connection and without any costs. Any changes you make are safe and secure.
Popular Tools: XAMPP is one of the most popular and easy-to-use options. It’s a software package that includes everything you need: Apache (web server), MariaDB (database, compatible with MySQL), PHP, and Perl. XAMPP is available for Windows, macOS, and Linux.
XAMPP installation instructions:
Go to the Apache Friends homepage and download the version of XAMPP that matches your operating system.
Run the setup file and follow the instructions. In most cases, you can just click "Next" and keep the default settings.
Once installed, open XAMPP Control Panel and start two services: Apache and MySQL .
2. Hosting (Actual web server):
Once you're ready to put your website on the internet, you'll need to hire a hosting service.
Technical requirements for Joomla: For Joomla to work properly, your hosting needs to meet the following minimum requirements (always check the latest Joomla version for accurate information):
PHP: Version 8.0 or higher.
Database: MySQL 5.6+, MariaDB 10.1+, or PostgreSQL 11.0+.
Web Server: Apache 2.4+ or Nginx 1.18+.
Necessary PHP utilities: json, xml, gd, zip... (most reputable hostings have them available).
Advice: Choose reputable hosting providers that have good support for open source and provide management tools like cPanel to make database creation and file management easier.
The process of installing Joomla on localhost and hosting is basically the same. Here are the detailed steps:
Download Joomla: Go to the official website joomla.org and download the latest version installation package (usually a .zip file).
Prepare Database:
On Localhost (XAMPP): Open a browser and go to http://localhost/phpmyadmin . Click on the "Databases" tab, enter a name for the new database (eg joomla_db ) and click "Create".
On Hosting (cPanel): Log in to cPanel, go to "MySQL Databases". Create a new database, then create a new user and assign that user to the database with full privileges (All Privileges). Write down the database name, username and password.
Upload and unzip:
On Localhost: Unzip the .zip file you just downloaded into the htdocs folder in the XAMPP installation directory (eg: C:\xampp\htdocs\myjoomlasite ).
On Hosting: Using the File Manager in cPanel, upload the .zip file to the public_html folder (or subfolder if you want) and unzip it.
Run the installer: Open your web browser and go to your address.
On Localhost: http://localhost/myjoomlasite
On Hosting: http://yourdomain.com
Website Configuration:
Setup Language & Site Name: Select the installation language (Vietnamese) and enter a name for your website.
Setup Login Data: Create a Super User account. Enter your real name, login name, strong password, and email address.
Database Configuration: Fill in the database information you created in Step 2 (database name, username, password). For localhost, the username is usually "root" and the password is left blank.
Finish: The installer will double check everything and start the installation. Once complete, you will see a success message page.
Delete Installation folder: This is a mandatory security step. Click the "Remove "installation" folder" button.
Now your Joomla website is ready! You can visit the home page or log in to the admin area.
The admin area is the control center of your website. To access it, go to yourdomain.com/administrator and log in with the Super User account you created.
Dashboard: This is the first screen you see. It provides an overview of the status of your website: new articles, logged in users, important updates for Joomla and extensions.
Main Menu Bar (left): This is where all the management tools are located. The most important items include:
Content: Manage everything related to content such as Articles, Categories, and Media.
Menus (Menu): Build and manage navigation menu systems on the website.
Components: Access the main applications of the website such as Article Management, Contact Form, Banner...
Extensions: The place to install, remove and manage Modules, Plugins, Templates and Languages.
System: Contains global configuration, maintenance tools, and system information.
Take the time to click through these sections to familiarize yourself with where the functions are located. Mastering the administration area is key to managing your Joomla website effectively.
Summary: To master Joomla, you need to understand its language. This section will thoroughly explain the 5 foundational "building blocks" that every Joomla website is built on: Articles, Menus, Components, Modules, and Plugins. With a solid grasp of them, you will be able to create any website structure.
A Joomla website is built from a combination of many different components. Understanding their roles and how they interact with each other is the foundation for you to be able to build and customize your website as you wish.
These are the core trio for creating and organizing content on your website.
Articles: The most basic unit of content. Each news item, each introduction page, each product... can be considered an Article. When creating an Article, you will work with a text editor (similar to Microsoft Word) to enter content, insert images, videos and other formats.
Categories: Similar to folders on a computer, Categories are used to group articles with the same topic together. For example, on a news site, you might have categories like "Sports", "Economy", "Technology". Joomla allows you to create a multi-level category structure (parent - child categories), helping to organize content logically and scientifically.
Tags: Tags provide a more flexible way to categorize content than Categories. A post can only belong to one category, but it can be assigned multiple tags. For example, a post about "Apple's new iPhone launch" could belong to the "Technology" category but be tagged with tags like "iPhone", "Apple", "smartphone". This makes it easier for users to find related content in multiple ways.
In Joomla, the Menu is more than just a list of links for navigation. It plays a central role in deciding what is displayed and where.
Menus: A collection of links. A website can have many Menus, for example: "Main Menu" (main menu at the top of the page), "Footer Menu" (menu at the bottom of the page), "User Menu" (menu for logged in members).
Menu Items: Are specific links within a Menu. The special thing is that when you create a Menu Item, you must select "Menu Item Type". This choice will determine what content that page will display. For example:
Single Article: Displays the content of a single article.
Category Blog: Displays a list of posts from a category as a blog.
Contact: Displays a contact form.
Featured Articles: Shows articles marked as "featured".
When a user clicks on a Menu Item, Joomla knows which component to load and what content to display. So, in a sense, every page on your Joomla website is made up of a Menu Item.
Here are three types of extensions that help you add features to Joomla.
Components: These are large applications that are responsible for processing and displaying the main content of the page. When you click on a Menu Item, you are actually calling a Component. For example:
com_content : Default component to manage Articles and Categories.
com_contact : Component to manage contact information and forms.
com_users : Component for managing users.
When you install a shopping cart like VirtueMart, you are installing an eCommerce Component.
Modules: Are smaller blocks of content, displayed in positions around the main Component. Modules are often used to display auxiliary information. For example:
Menu Module: Displays a menu system.
Login Module: Displays the login form.
Module "Latest Articles": Displays a list of latest articles.
Banner Module: Display ads.
You can assign a Module to appear on all pages, or only on certain pages.
Plugins: Work silently behind the scenes. They are small pieces of code that are triggered by system events (e.g. before a post is displayed, after a user logs in, etc.). Plugins can do a lot of things, such as:
Add function buttons to the text editor.
Automatically insert an ad code at the end of each post.
Authenticate users via Google or Facebook.
Templates: Determine the overall look and feel of your website: colors, fonts, overall layout, and style. Joomla completely separates content and presentation, meaning you can completely change the look of your website without affecting the content you've entered. There are two types of templates: frontend templates and backend templates.
Positions: Each template defines a series of "positions" (e.g. position-1 , left , right , footer ). These are where you can place your Modules. To see all the available positions on your template, you can add ?tp=1 to the end of your homepage URL (e.g. yourdomain.com?tp=1 ).
In short, a Joomla page is created like this: the user clicks on a Menu Item , Joomla calls a Component to create the main content, then loads the Modules assigned to that page and places them in the Positions specified by the Template. Plugins can run in the background to modify or add functionality during this process.
Summary: Theory is useless without practice. In this section, we will work together on a real-world project: building a simple personal blog or news site from scratch, applying all the core concepts we have learned.
Before creating anything, sketch out the structure of your website on paper. For a simple blog/news site, we need:
Main categories: For example: "Joomla Tutorials", "SEO Tips", "Technology News".
Static pages: "About", "Contact".
Home Page Layout: Will display latest posts from all categories.
Sub-modules: A search box, a list of popular articles, and a subscription form.
Create Categories:
Go to Content -> Categories -> Add New Category.
Create the planned categories one by one: "Joomla Tutorials", "SEO Tips", "Technology News".
Create Articles:
Go to Content -> Articles -> Add New Article.
Write about 5-6 sample articles. For each article,:
Enter a title.
Use the editor to enter content, insert some images.
In the "Content" tab, select the corresponding Category for the article.
To display on the home page, in the "Content" tab, set the "Featured" status to "Yes".
Create two additional separate posts for the "About" page and the "Contact" page. Make sure they are in the "Uncategorized" category or a separate category for static pages.
Create Main Menu:
Go to Menus -> Manage -> Add New Menu . Name it "Main Menu".
Create Menu Items:
Go to Menus -> Main Menu -> Add New Menu Item.
Home:
Menu Title: Home
Menu Item Type: Select Articles -> Featured Articles .
Default Page: Select "Yes".
Joomla Tutorial:
Menu Title: Joomla Tutorial
Menu Item Type: Select Articles -> Category Blog.
Choose a Category: Select the "Joomla Tutorials" category.
Do the same for the “SEO Tips” and “Tech News” categories.
Introduce:
Menu Title: Introduction
Menu Item Type: Select Articles -> Single Article .
Select Article: Select the "About" article you created.
Contact:
Menu Title: Contact
Menu Item Type: Select Contacts -> Single Contact . (You will need to create a Contact in the Contact Component first).
Install Extension:
Download a popular contact form extension (e.g. RSForm! or Convert Forms) and a better editor (e.g. JCE Editor) from the Joomla Extensions Directory.
Go to Extensions -> Manage -> Install . Drag and drop the downloaded .zip file to install.
JCE Editor Configuration:
Go to System -> Global Configuration .
In the "Site" tab, under "Default Editor", select "Editor - JCE".
Create Contact Form:
Go to Components and find the form component you just installed.
Create a simple form with fields: Full name, Email, Title, Content.
Create a new Menu Item pointing to this form, or use its module to insert it into the Contact page.
Template Settings:
Find and download a free template (e.g. from Helix Ultimate, Gantry Framework).
Install the template via Extensions -> Manage -> Install .
Activate Template:
Go to Extensions -> Templates -> Styles .
Find the template you just installed and click on the star to set it as default.
Assign Modules to Positions:
Go to Extensions -> Modules .
Open the "Main Menu" module. In the "Module" tab, select a suitable Position (for example, menu , position-1 ).
Create new modules like "Search", "Popular Articles" and assign them to positions in the right column (eg: sidebar-right , position-7 ).
In the "Menu Assignment" tab of each module, you can choose to have it displayed on all pages or only certain pages.
Once you have completed the above steps, visit your website. You should see a basic but fully functional blog/news page, built entirely with your own skills. This is a major milestone, demonstrating that you have mastered the fundamentals of Joomla.
Summary: Building a website is just the beginning. To make your website work effectively and securely, you need to equip yourself with optimization skills. This section will provide essential techniques for SEO, increasing page load speed, and the most important security steps.
Joomla comes with many powerful tools for search engine optimization (SEO). It is your job to enable and use them properly.
Enable friendly URLs (SEF URLs):
Go to System -> Global Configuration .
In the "Site" tab, go to the "SEO Settings" section.
Search Engine Friendly URLs: Set to "Yes". This will turn URLs like index.php?option=com_content&view=article&id=1 into /alias-of-the-article .
Use URL Rewriting: Change to "Yes". This will remove index.php from the URL.
Note: For "Use URL Rewriting" to work, you need to rename the htaccess.txt file in your website's root directory to .htaccess .
Customize Page Title and Meta Description:
For Articles: When editing an article, switch to the "Publishing" tab. Here you can enter "Meta Description" and "Meta Keywords".
For Menu Items: When editing a Menu Item, switch to the "Page Display" tab. You can customize the "Browser Page Title" so that it is different from the menu title. The "Metadata" tab allows you to enter a "Meta Description" and "Meta Keywords" specific to that page.
Create Sitemap:
A sitemap is an XML file that lists all the URLs on your website, making it easier for Google and other search engines to crawl.
Joomla does not have a default sitemap generator. You need to install a dedicated extension. OSMap is a free and very popular option that is easy to install and automatically generates a sitemap for you.
Image optimization:
Always fill in "Alternative Text" for every image you upload. This is the text that describes the image content, very important for SEO.
Compress images before uploading to reduce page load time.
Page load speed is an important Google ranking factor and directly affects user experience.
Enable Caching and Gzip:
Go to System -> Global Configuration .
Switch to the "System" tab. In the "Cache Settings" section, select "Cache Handler" as "File" and "Platform Specific Caching" as "Yes". Set "Cache Time" to about 15-30 minutes.
Switch to the "Server" tab. Under "Server Settings", turn "Gzip Page Compression" to "Yes".
Image optimization:
Use online image compression tools (like TinyPNG) or desktop software to reduce image file size without losing too much quality.
Use next-generation image formats like WebP where possible.
Use the Extension optimally:
Install the JCH Optimize extension. This extension combines CSS and JavaScript files, compresses HTML, and many other techniques to reduce the number of requests to the server and significantly speed up page loading.
Upgrade Hosting environment:
Make sure you are using the latest PHP version supported by your hosting (8.0 or higher).
Choose a high quality hosting provider that uses SSD hard drives and servers optimized for Joomla.
Security is an ongoing process, not a one-time action. Here are the most important things you can do:
[ ] Always update: Regularly check and update Joomla and all extensions (components, modules, plugins, templates) to the latest version. This is the most important line of defense against known security vulnerabilities.
[ ] Use strong passwords: Set complex passwords (a combination of uppercase, lowercase, numbers, and special characters) for your Super User account and all other administrative accounts.
[ ] Enable two-factor authentication (2FA): Joomla supports 2FA right from the core. Enable it for the Super User account to add a solid layer of protection.
[ ] Change database table prefix: When installing, avoid using the default prefix jos_ . Change it to a random string (e.g. xyz78_ ).
[ ] Set file/folder permissions (CHMOD): Make sure folders are set to 755 and files to 644. The configuration.php file should be set to 444 after configuration is complete.
[ ] Install Security Extension:
Akeeba Admin Tools: Provides a web application firewall (WAF), file scanning tool, and many other advanced security features.
RSFirewall!: Another comprehensive security extension, very popular in the community.
[ ] Regular backups: Install Akeeba Backup and set up a schedule to automatically backup your entire website (files and database) daily or weekly. Save your backups in a safe place (e.g. Google Drive, Dropbox). This is your lifeline in case something goes wrong.
[ ] Remove unused extensions: Completely remove any components, modules, plugins you no longer use to minimize potential risks.
Taking this checklist seriously will help make your Joomla website much safer from cyber threats.
This is the gateway to a world of unlimited customization, designed for those who want to become real Joomla developers. You will be introduced to the basic MVC architecture, how to create a simple module yourself, and advanced template customization techniques.
To program for Joomla, you must understand how it is organized.
Main directory structure:
/administrator : Contains all files related to the admin page.
/components : Contains components.
/modules : Contains modules.
/plugins : Contains plugins.
/templates : Contains templates.
/libraries : Contains Joomla source code libraries and third parties.
configuration.php : The most important configuration file, contains database connection information and global settings.
MVC (Model - View - Controller) architecture:
Joomla strictly follows the MVC architectural pattern. This is a software design pattern that separates processing logic, data, and user interface.
Model: Responsible for interacting with the database. It fetches data, saves data, deletes data. Model does not care about how the data will be displayed.
View: Responsible for displaying the data it receives from the Model. View contains layout files (usually HTML and PHP) to present information to the user. It does not handle business logic.
Controller: Is the brain that controls. It receives a request from the user (e.g. a click), decides which Model needs to be called to get the data, and which View needs to be used to display that data.
This separation helps keep the code organized, maintainable, and reusable.
This is a primer on how an extension is created. The simplest module requires 4 files:
mod_helloworld.xml (Manifest File): This file describes your module to Joomla: name, author, version, and files that need to be installed.
mod_helloworld.php (Main File): This is the entry point of the module. It will call the helper file to get the data and call the template file to display it.
helper.php : Contains classes and methods to handle logic, such as retrieving a greeting from a database or a file.
tmpl/default.php : This is the module's View file, containing HTML and PHP code to display output to the user.
Procedure:
Create a folder called mod_helloworld .
Inside, create the above files with basic content. For example, tmpl/default.php might just contain the line: .
Compress the mod_helloworld folder into the file mod_helloworld.zip .
Go to Joomla admin page, Extensions -> Install and install this zip file.
Go to Extensions -> Modules , you will see your "Hello World" module. Enable it and assign it to a location to see the result.
Components are the most complex but also the most powerful type of extension. Developing a component usually involves:
Planning: Identify the functions and data tables needed.
Build the Backend (Administrator): Create views to manage (add, edit, delete) records in the database. This is where the administrator will work.
Building the Frontend (Site): Create views to display data to end users. For example: a view to display a list, a view to display details of a record.
Write Models and Controllers: Create Models to handle data and Controllers to navigate requests.
This requires in-depth knowledge of PHP, MySQL and Joomla API.
This is one of the most powerful and safest techniques for customizing Joomla. Override allows you to change the appearance of a component or module without editing its original files.
Why Override?
If you edit a component's original file directly, all your changes will be lost when you update the component to a new version. Overrides solve this problem.
How it works:
You just need to copy the original layout file of the component/module into a special folder structure inside your template. Joomla will automatically prioritize the file in your template over the original file.
Example: Override the article interface (com_content):
In your template directory (e.g. /templates/my_template ), create a directory called html .
Inside html , create a folder named the same as component, for example: com_content .
Inside com_content , create a folder named the same as the view, for example: article .
Copy the original layout file from /components/com_content/tmpl/article/default.php into the folder you just created: /templates/my_template/html/com_content/article/default.php .
You can now edit the default.php file in your template. Any changes will be applied without affecting the original file and will not be lost when Joomla is updated.
Mastering this technique allows you to customize the look of Joomla in a virtually unlimited, secure and professional way.
Learning is a journey, and you don't have to go it alone. We've compiled the most reputable forums, courses, and documents from the Vietnamese and international Joomla community so you can seek help, learn from experience, and continuously improve your skills.
Joomla! Forum (International): This is the official and largest Joomla forum worldwide. Almost every problem you encounter has been asked and answered here. This is an invaluable resource for solving technical problems.
Joomla! Vietnam Forum and Facebook Groups: The Joomla community in Vietnam is also very active. Participating in local forums and Facebook groups helps you easily communicate in Vietnamese, receive support from experienced people and update information and Joomla events in Vietnam.
Joomla Extensions Directory (JED): More than just a place to download extensions, JED is a community. Each extension has its own reviews, comments, and support forum where you can ask questions directly to the developer.
Joomla! Training (Official): The official Joomla training site offers tutorials and videos from basic to advanced.
YouTube: There are many reputable YouTube channels dedicated to Joomla. Channels like "Tim Davis" (Joomla Fan) provide very practical and easy to understand video tutorials.
Online learning platforms (Udemy, Coursera): Search for Joomla courses on these platforms. Read the reviews of previous students to choose a quality course with up-to-date content.
Joomla! Documentation (Official): This is the bible for anyone who wants to learn Joomla, especially developers. All the API documentation, component, module, and plugin development guides are here.
"Joomla! 4 Programming" and In-Depth Books: When you're ready to dive into programming, look for books written by experts in the community. They often provide systematic knowledge and practical examples that online resources sometimes lack.
Learning Joomla requires patience and constant practice. Don’t be afraid to ask questions, join in discussions, and share your knowledge. The community is Joomla’s greatest strength, and by being a part of it, you’ll never be alone in your journey to mastering this powerful platform.