Permissions and access levels in Joomla CMS – Joomla User Guide

Permissions and access levels in Joomla are two different thing . Permissions are administrative privileges which allow user to perform certain action in the backend admin interface. Action can be editing content, deleting content, creating content, front end login, back end login, etc  .
Access level is also a kind of authority to view content. This authority is connected to front end content of website. Permissions and access level is granted to user groups.

  • Permissions allow to perform actions
  • Access level allow you to view content
  • Permissions are granted primarily for back end actions
  • Access level is related with viewing of front end content

Permissions in Joomla

Basic idea of Permissions in Joomla

When you create a website then you allow public to see your content but management of website is done by limited people. There are different task associated with website management like general administration, content writers, content editors etc. So as owner of website, you can grant permission to some people for certain task. Number of task are limited so the number of permissions are also limited. For each task or action, you can grant permission to number of people so these people who act for similar task can be placed in a group and permission can be accorded to that group. User groups like editors, author has permission to login into back end and create, edit, delete content. These groups like editor, author, manager, contributor, administrator etc are mainly some kind of back end managers who contribute for website content or website administration on behalf of super user.

Permissions in Joomla components

You may refer previous article where I gave brief idea on Joomla component, module and plugins. Components are the main building block of Joomla website. Every component is for some purpose like user management, article management, etc. Each component can have front end and back end interface. Front end part of component delivers result whereas back end part of component provides interface for achieving the set objectives. Who can do what, this is objective of setting up different permission in the component. Take example of user management component. Who can create new user, who can edit user settings, who can delete user, these are all some kind of authority to be delegated in the back end. Whoever gets authority for some action on component back end should have authority to login into back end interface also. If website allows front end login then each registered user should have permission to edit own settings. So different type of permissions depend upon individual component. Each component had specific role and specific permissions which are created by the component developer.

Basic idea of Access Levels in Joomla

Viewing access level is mainly front end barrier for display of content or information. If your website has tutorial for different class students then each tutorial can have access level according to class of student. Class 5th student can have access to tutorial of class 5th. Class.9th student can have access to tutorial of class 9th. So access level to content decide who can see particular content. In each viewing access level there can be one or more user groups. Number of permissions are finite as there are finite number of actions which can be delegated to others. On the other hand, there can be infinite number of access level.

User management in Joomla CMS – Joomla User Guide

One of the advantage of Joomla over WordPress is advanced user management. The user manager extension has toolbar which works for both backend administrator interface and frontend interface.

In the front end, User manager extension allows site visitors to register, login and logout, change their password and other information while the backend interface has options like user registration, user group, user access levels etc. All these options are assessable from the Users toolbar in administrator interface. Look at the options available in Users toolbar.

  1. User Manager – New manager option allows to add a New user from the administrator interface.
  2. Groups – This option allows to create a new user group or edit previous groups.
  3. Access Level – In this option, you can create a new viewing access level or edit access level for users
  4. User notes – As the name suggests, Notes can be created for users.
  5. User Notes Categories
  6. Mass mail users – Mass emails can be sent to users.

User management in Joomla

User management in Joomla

The functionality and features of user management in Joomla can be broadly divided into three parts.

  1. User registration
  2. User groups
  3. Access levels

User Registration

The process of user registration from the front end is quite simple. The users registered from the front end interface are in the registered user group.

The administrative back-end interface allows to add user directly. User registration through admin panel offers more configuration options like specific user group, back-end template, back-end language, front-end language, time zone etc. Admin interface has option to block or activate particular user.

User Group

Administrator can create number of user groups. Each created group is part of a parent group. Top most parent group is Public so all group fall within Public group. Look at the basic groups in Joomla.

Public

|-Guest

|-Manager

|-|-Administrator

|-Registered

|-|-Author

|-|-|-Editor

|-Super Users

You can see that Registered is the child group of Public group. Similarly Manager is also child group of Public group whereas Author is child group of registered group. and Editor is child group of Author group.

You can also create group and sub group according to different roles in your application.

Permissions and Viewing Access levels

Difference between permissions and viewing access levels must be clear. Permissions are granted for creating content, editing content, entry into admin interface, deleting content etc. Permissions relate with administrative actions whereas the viewing access level is used to allow a group to view a content.

The permissions for a group is set in the Global settings. In general permissions are set for groups which manage content or manage CMS. No special permissions are granted to Public group. If website allow user registration from front end then those users are automatically placed in registered group. Registered users have permission for site login. Author has permission for site login, create content and edit own content.

When you create a new group and you want to provide certain permission to create or delete or edit or else then you can set permissions for that group from Global settings. Permissions are some kind of administrative privileges which you offer to some group.

Viewing Access level tell you that who can view a particular content or menu item. Viewing Access level for each of the article/content is set from the article manager. Similarly Viewing Access level for a menu item can also be set from Menu manager. The default Viewing access level is Public. Default access level is set from the Global settings page.( Global settings->Site->Default access level).

When you create a new Viewing access level, then you can select one or more user group to be part of that access level. So those groups will only be able to view particular content having assigned viewing access level.

Naming Convention for Controller, Model, View class in Joomla Component

When we start Joomla component development, we need to take support of different classes available in Joomla library. Each class contains different methods, properties which are utilized for creating functionality in our component.

Naming Convention for Controller, Model, View class

Instead of writing code for each task, it is always good to use a well-defined available code from the library. Joomla library has large set of functions which are defined in different classes so it’s a good idea to use Joomla library for achieving the functionality in Joomla Component.

Joomla classes name start with letter J like JController, JApplication, JModelAdmin, JView etc. Each of these classes has their specific methods which you can refer from the Joomla API literature. The methods are defined through php functions in classes.

When we require those controller, model and view class, they are called in the component file. For example mycompController extends JControllerLegacy. Here JControllerLegacy class is called in the name mycompController so all the methods and properties are available in the mycompController class of your component. Now you can use the available methods inside this class for your component.

Naming convention for controller, model and view class

  • There is one primary controller at the root directory of component which is named as <component_name> + Controller.
  • The name of other subcontroller ,model and view class are like this

<prefix> + Controller + <suffix>

<prefix> + Model + <suffix>

<prefix> + View + <suffix>

Prefix- It is generally the component name.

Suffix

In General, Joomla component are designed to deal with two types of display. First is where single item is taken for display, editing etc whereas the other deals with display of multiple items. So this singular or plural approach of display classifies the corresponding controller, model and view for their class names and file names as well.

For example our component mycomp deals with the library app. Look at the controllers, models and views.

MVCClass NameRemarks
ControllerPrimary controller
mycompController
File Name
controller.php

File location

/

This controller creates a new instance of controller class which finds appropriate model, view or sub-controller as per URL instructions. If no task is specified then it proceeds with default task Display
ControllerSub Controller class
mycompControllerbook
File Name
book.php

Directory

/controllers/book.php

Sub controller which deals with the single book item and handles task like editing, display etc. of particular book item.
ControllerSub Controller class
mycompControllerbooks
File Name
books.php

File location

/controllers/books.php

Sub controller class which deals with all the methods for list of books..
ModelModel class
mycompModelbook
File Name
book.php

File location

/models/book.php

Model class which has methods to handles data for individual book item, editing, saving etc
Model class
mycompModelbooks
File Name
books.php

File location

/models/books.php

Model class with methods which creates list of books. The methods include database operations, data manipulations for list of book items.
ViewView class
mycompViewbook
File Name
view.html.php

File location

/views/book/view.html.php

This view class has methods which connect to corresponding model for getting data for individual item, editing data, saving etc.
View class
mycompViewbooks
File Name
view.html.php

File location

/views/books/view.html.php

This view class has methods which provide data for list of books. The collective information is presented through view to end user.

This classification of controller, model and view according to single or multiple item display helps in creating two sets of controller, model ,view which have methods to deal with single data item or multiple items. Each of these two sets have same suffix in their name which helps to connect with each other. mycompControllerbook, mycompModelbook and mycompViewbook are in one group whereas mycompControllerbooks , mycompModelbooks and mycompViewbooks are in other group. The standard methods available in different classes automatically provide prefix and suffix value when connecting between model, view and controller.

Developers can give different names for their controller, model and view but the methods like getModel need to be defined on each occasion for specific names. When controller use getModel() method ,this connects to corresponding model automatically. When view use getModel() method ,it gets corresponding model automatically. So name of controller, view and model class is important in achieving communication between them.

How MVC Architecture function in Joomla Component

We already explained a general idea of MVC architecture. Here we will see how Joomla uses this MVC architecture in component development. It is not easy to create a complete picture with few examples but we will try to explain the flow of information between controller, model and view so that component development with MVC architecture can be understood.

Grer assembly

Joomla URL pattern in administrator backend interface

When you are logged into the Joomla administrator side, look at the browser URL. The URL looks something like http://localhost/joomla/administrator/index.php.Now you go to any component and check the URL again. The URL for Weblinks component looks like http://localhost/joomla/administrator/index.php?option=com_weblinks. Talking of URL structure is essential at this juncture. The URL shows you the information about where are we headed. When we talk about the MVC model, it is clear that browser sends requests in the form of URL and those requests are handled by controller to decide for action. Same concept will be applied here as well.

  • First part of URL is the domain name so as an example take it http://localhost/joomla/administrator/
  • You may remember as I pointed in first article that each Joomla web page has several modules but only one component which resides at the central part of webpage. So the URL like this http://localhost/joomla/administrator/index.php?option=com_contact shows the name of component. URL element option=com_contact is the linking part to component. The parameter ‘option’ finds component name. In our example component is contact and component folder is com_contact.
  • Next level of URL may be like http://localhost/joomla/administrator/index.php?option=com_contact&view=contacts. Here option=com_contact shows that component is contact (folder name for component is com_contact) and view=contacts shows that selected view is contacts. Both the URL parameter for component and view are joined by &.
  • URL http://localhost/joomla/administrator/index.php?option=com_contact&task=delete&id=15,As cited in previous examples this shows component – com_contact. The next element of URL is task=delete and id=15. The task directs the controller for the next action. Here after reading the URL, controller knows that next task is delete for item id 15.
  • If we go to other level of URL like http://localhost/joomla/administrator/index.php?option=com_contact&view=contact&layout=edit&id=1, it directs to contact component, contacts view, edit layout and item id is 1. So a specific item from database will be presented for editing.

The above URL example would have given an idea of these following terms.

Option= In the backend URL structure this option variable shows the component

Task= As the name suggest, task variable declares about next assignment for controller. Here there is one big question, what is the task? Task is some predefined method, executed through the function defined in controller class. For example task=edit then controller will find the edit method. What has to be done in edit method should be defined in edit method so there must be some function which gives you output for edit task.

View = It directly tells about specific view. In this case role of controller is minimized. View may display list of items or one item but after getting view parameter in URL, the controller need to redirect to view for next action.

Layout = Layout is next stage of view. Collecting data from controller or model etc is completed in view. The layout is presentation layer stage where all the data is already collected.

Id = This is just the specific id of data item which need to collected from database.

Let me now explain each of the URL pattern according to MVC architecture pattern for Joomla component

  • http://localhost/joomla/administrator/

    Since no individual component is selected, no specific component controller action or view is activated by URL

  • http://localhost/joomla/administrator/index.php?option=com_contact

    Now in this URL one particular component is selected. You can see from URL pattern that it just brings to the entry point of component. There is no further instruction so component controller just decides for default actions. Default actions can any specific display which is automatically shown when no controller action is defined. It is something like entry to front page. Here controller will lead to a default view.

  • http://localhost/joomla/administrator/index.php?option=com_contact&view=contacts

    This URL will land into main controller which will call the view ‘contacts’ so we are headed from controller to view. If the contacts view has static information then same can be coded into view file. Generally, view need dynamic content therefore view will use its methods or functions to collect those data which in turn call model to obtain data from database and process according to view requirement.

  • http://localhost/joomla/administrator/index.php?option=com_contact&task=delete&id=15

    In this URL, component controller finds a task named delete so controller will look for delete method in the controller class and item to be deleted will be id=15. In this case the delete method will call suitable model which will perform delete operation and inform controller. After completion of model delete operations, the controller will call a specific view for end user information.

I have not discussed these examples according to controller, model or view coding, which may complicate the understanding of MVC architecture in Joomla. We will analysis the same situations at later stages with all Joomla code.

In general, MVC design pattern divides programming tasks into three parts. Controller processes user input, model interacts with database and applies logics. The view displays content on the page.

Joomla Component Development – MVC architecture

Model-View-Controller, popularly known as MVC is software design pattern for software application. It was initially developed for desktop applications but now it is widely used for web applications also. The MVC architecture divides the application in broadly three parts as per the assigned role. The three part controller, model and view jointly achieve the application results but each block plays a specific role in achieving the result.

MVC architecture diagram

Let me present this in simple terms. Take an example of any web application.

  • Whenever we see any page on browser which is the end result of all processing is presented by View. It means that the final output is presented by the view.
  • When you click on menu item, button or submit a form, it involves action. These are handled by controller. Controller is important essential element of MVC architecture which understands instructions and decides for next action. It can call model or view based on decision.
  • Model stands in between which process the information, data, logics etc. For example when we call a page, controller comes into role which directs model to collect data from database and apply logics and later view receives that finished data which is finally presented by view to users.

In simple language, controller receives actions, decides on whether handover the task to view or model. Model is like brain which process information with its hard coded logics after receiving external inputs and collecting inputs from memory. Role of view is simple to present output to users.

The MVC architecture broadly divides the functioning of software application. The role of each element can vary from one MVC pattern to another. Some of the tasks like data validation and user authentication are generally performed at the controller layer but same can be applied in the model also. Objective of creating a standard MVC architecture is to simplify application development, create systematic coding, easy flow of information, easier updates etc.

In next article , we will apply MVC architecture in the Joomla Component development.

Joomla Component Development – Create Your First Basic Joomla Component

We discussed about basic Joomla extensions, tools for development etc earlier. Now we will create a basic Joomla component. We are creating a basic component and then we will extend features one by one gradually so that the concepts are explained systematically.

The Joomla component development for back end interface and front end interface is quite similar. The back end interface involves major tasks, actions, access control, configuration etc so we will focus entirely on component back end development at the beginning. Development of Front end component will be done at later stage.

Backend interface of First Joomla component

Let’s start backend Joomla component development by creating a basic Joomla component for backend. Let me list all the steps here before we proceed.

Task

Reasons

Example

Create a main folder for component files

This will contain all the component file and folders

Folder name – abcd

Create a folder for frontend files and folders inside main folder

This will contain all the component file and folders for frontend

Folder name – site

abcd/site

Create a folder for backend files and folders inside main folder

This will contain all the component files and folders for backend

Folder name – admin

abcd/admin

create a PHP file <component_name>.php inside this admin folder

This is first file which is picked up while component is executed from backend

abcd/admin/mycomp.php

Create <component_name>.xml file

Manifest file, required for component installation

abcd/mycomp.xml

So we will have following folders and files

  • abcd
  • abcd/admin
  • abcd/admin/mycomp.php
  • abcd/site
  • abcd/mycomp.xml

[Inside each folder, there is one blank html file. The purpose of this blank html file is to prevent directory browsing. I am leaving it for the purpose of development simplicity]


Create main folder for compilation of component files

This is the first step for creating a component. This folder is just to keep all the component files and folders in one place. There Name of the folder can be anything. When we complete the component development process then we create a zipped file by compressing admin folder, site folder and manifest file .This zipped file is used to install component through Joomla extension manager. For our tutorial, we give the name of the folder abcd

Create front end and back end file folders

Inside the main folder abcd create a folder name admin. This folder will have all the component files for component backend interface or Joomla administrator side.

Similarly create a folder named site inside abcd folder. This folder will have all the component files for component frontend.

Create mycomp.php file inside admin folder

We have created corresponding folders for both the interface. Now we will create main index file i.e mycomp.php which is the first file executed when component is accessed from backend.

Create mycomp.xml file

This is the main manifest file. A manifest file has general installation information and parameters for configuration of Joomla extension. The name of the manifest file can be manifest.xml or <component_name>.xml. This file includes all the details of folders and files available in this component. When Joomla starts installation of component, it reads the mycomp.xml and place all the files and folders in their correct place according to Joomla directory structure. You may remember from previous article on Joomla directory structure that component files are placed in mainly two places. First components directory is /administrator/components/com_<componentname> which is used by administrator side of Joomla interface i.e backend interface. The front end component files are placed in /components/com_<componentname>. Here com__<componentname> folder has all the files/folder collection for individual component. It is standard Joomla nomenclature for component folder inside this directory.

When we install our component package, then our files/folders collection in the admin folder are installed inside /administrator/components/com_<componentname> whereas the files/folders inside the site folder are installed in /components/com_<componentname>.


So I think, you would have understood basic folders and files. As pointed above, we need to create two files for our basic component.

mycomp.php file for backend interface( abcd/admin/mycomp.php )

We are just creating a simple file to show the main component file access from the backend interface. Use your code editor and create a PHP file mycomp.php

mycomp.xml

Look at the sample file shown below.

The first line is the standard XML file description.

Everything is enclosed within <extension> <extension> tag.

The first few lines of the code just show the basic information about the component like author name, author URL, component name, component version etc. The code is nearly same in the almost all the components except the specific entries are modified for individual component.

<files folder=”site”> </files> tag contains all details of file/folder in site folder.

<administration></administration> contains details of backend interface like file, folders, menu. The <menu>COM_MYCOMP</menu> tag creates a menu entry into the Joomla components toolbar at the component backend. Here you can notice that the name of menu is given in capital letters. This text string is replaced by the corresponding language string if language translation files are created for component. I don’t want to create confusion at this stage so just forget it. We will discuss it later in detail.

Inside the <administration> tag, there is <files folder=”admin”> </files> tag which specifically list all file /folder for the administrator side.


This basic component is now ready. You can now compress the admin folder, site folder and mycomp.xml file together. Give a suitable name to your zip file. You can download our mycomp.zip here. The zipped file has following files/folders

  • /admin
    • /admin/mycomp.php
  • /site
  • /mycomp.xml

Now you can install this component. After installation, check under the component menu, there is one entry com-mycomp. This is our mycomp component. This menu entry is created by our mycomp.xml file( We mentioned <menu>COM_MYCOMP</menu> ).Once you click on this menu item, it will take you to the backend interface of component (/administrator/components/com_mycomp/) where our mycomp.php is picked. So check yourself and get ready for next update.

How to begin with Joomla Component Development

We discussed about Joomla extension development and Joomla Directory Structure in last article. Now we will focus on Joomla component development. It is advised to proceed sequentially for understanding the functioning and development of Joomla components. Development environment, development tools, basic knowledge of languages should be ensured before going deeper into Joomla component development.

050314_1217_Howtobeginw1.png

Knowledge of PHP, MySQL and HTML

Basic knowledge of PHP, MySQL and HTML is expected for understanding the component development programming. You need not to be an expert of PHP, MySQL, and HTML but basic knowledge is essential to understand Joomla component development.

Development for which Joomla version

At present Joomla 3.3 version is available in stable form. There are differences in the code base of major versions from 1.5 to 2.5, 2.5 to 3.X but it is expected to learn development in the latest environment because that will be supported for longest period by the Joomla community. Old versions will slowly phase out in coming months.

Development Environment

Before staring Joomla component development, users need to create a Joomla installation locally or remotely in some web server. It is advised to create local installation which will give faster access to all the files and allows easier changes.

  • Local web server for Joomla installation – It is easier to install XAMPP which create local web server along with PHP and MySQL. So user will not require any further applications for Joomla installation. Alternatively, you can install WAMP or MAMP(for Mac OS X) for creating local web server with PHP, MySQL. You can check previous article for information on Joomla installation in Local PC.
  • The above applications install apache server in local PC. If you want to use Windows IIS web server, then activate the IIS service of windows and separately install PHP and MySQL.

Development Tools

Joomla component development work will start by creating files for your component. There are several files in component with extension like .php , .xml, .css which can be directly edited in simple text editors like Notepad. Then why we need additional software for development ? Answer is simple i.e better productivity, higher efficiency. These applications assist you in writing code in different languages efficiently.

  • Software code editors like Notepad++, Sublime, TextEdit provide you several facilities like syntax highlighting for different language, autocomplete syntax etc.
  • The next level of software development applications like Eclipse, Netbeans, ZendStudio etc provide Integrated development environment. Eclipse is open source solution and it is one of the preferred choices of several developers.

If you are starting development, then just check simple code editors and other IDE available for Joomla development. There is large set of information available on internet for these code editors and IDE. Just Google it and choose what suits you most as development tool.

Component Installation– Joomla component installation can be done in few simple steps. Login into backend administrator then go to Extensions->Extensions Manager->Install. Either upload the zipped folder of component package or directly install from URL location. As we install other component package, we need to install our test packages in the same manner. For creating component package, we create necessary component folders, files and then prepare the zip folder of component which can be installed similarly.

Joomla Component Development

Beginning of Joomla component development looks slightly confusing that’s why I like to begin cautiously with simple term and least complexity.

Component name – It is essential to choose an appropriate name of your component. We select a component name ‘Findurlaptop’ so all the files of this component will be inside folder with name ‘com_findurlaptop’.

Component Directory Structure – It is advised to go through the Directory structure of Joomla installation and then look into the details of component folders. Within the component folder, for example com_banners, com_contacts, com_weblinks there is standard directory structure but we will go into details sequentially as we proceed for development otherwise terminology will confuse beginners unnecessarily.

Front end and Back end – Joomla has one back end interface for administrative purposes and one front end interface for general users. All the essential configuration parameters, access control etc. are fixed through the administrative interface. Front end presents the web information and it is basically meant for general users but certain controls are sometimes provided to front end as well. As cited for Joomla interface, component also has front end and back end interface so Joomla component development requires application development for both sides. The component back end files will be located inside /administrator/ components/ com_findurlaptop/ while component front end files will be located inside /components/com_findurlaptop/.

These are some of essential things which everybody should know prior to moving inside development work. In the next article we will develop a basic Joomla component.

Joomla Extension Development -Understand Joomla Directory Structure

Joomla has back end and front end interface. If you observe that when you login to joomla site with URL like http://localhost/joomla/administrator/ so this indicate that you are entering the interface from the administrator area whereas http://localhost/joomla/ will take you to front end interface. When someone tries to enter into administrator area, he lands into index.php file of Administrator folder. On the other hand front end user lands into root folder and index.php file of root folder is lifted for the front end access.

Administrator folder has similar directory structure like Joomla root directory structure which you will observe after reading the details below. Look into the details of Joomla directory structure.


Understand Joomla Directory Structure

Cache– Joomla uses this folder to store cached pages. If Joomla cache feature is ON then Joomla uses cached pages to deliver content instead of accessing database and generating content. It improves CMS performance and reduces the load on server.

CLI – This folder stores command- line- interface (CLI) applications.

Components – This folder stores front end files of all the components. Inside this components folder, there are sub-folders for specific component like com_banners, com_contact, com_content (for articles), com_finder (for Smart Search), com_mailto, com_media, com_search, com_users etc resides which has their specific front end component files.

Images – This folder contains all the images used in the applications.

Includes –When a front- end or back- end session is started it loads different classes and constants into memory. The files inside in this Includes folder load the files that we require to start a front-end session. There is one similar includes folder in administrator/includes which loads files that are needed for starting a back-end session.

Installation – This is a completely independent application which plays important role at the time of Joomla installation. It is a self-contained application. Whenever Joomla is accessed either through back-end or front-end, system checks for file called configuration.php located in the root directory. If system do not find configuration.php then it start the installation application. After the Joomla installation, this installation application create configuration.php file and installation folder need to be removed either manually or automatically. This is reason, the installation folder is not visible in already installed Joomla but same is available in Joomla installation package.

Language – Joomla has native support for more than 68 languages. All the text strings in the Joomla applications are translated in particular language before showing it on browser. Joomla accomplish this task with the help of language pack of each language. Each language pack has set of language files which provide appropriate word for each text string. For a standard English Joomla installation, there are two sub folders inside language folder, namely language/en-GB and language/overrides. The subfolder en-GB contains language file which help in translating text whereas subfolder overrides provides files which can change the value of text string without changing the entire language file. The current language folder contain language file for the front end language translations whereas back-end language files are placed inside administrator/language folder.

Layouts – This folder contains all the layout files. Joomla 3.0 introduced JLayout class, it helps in creating layout for views which are repeatedly used in the display. Before this class, the layouts were confined with specific view file but JLayout empowers for the cases where specific layouts like sidebar, search etc can be commonly used between different views.

Libraries – This contains multiple subfolder where each folder has specific library file. Software libraries have set of programs which are used repeatedly in several main applications. What we see in Joomla CMS, Joomla framework is all compilation of these library file which in totality provides a vast set of functionality. Phpmailer library set is used to send emails, framework library has core framework programs, CMS library has Joomla CMS set of programs etc.

Logs – This folder contains event logs which are generated on certain condition. For example Joomla generates error logs in program error conditions and same is registered in error.log file.

Media – The media folder contains Image, CSS and Javascript files for some of the components, modules ,CMS, system, editors etc.

Modules – It contains subfolder for each of the Joomla module. A similar module subfolder exists in administrator folder for backend modules. The naming convention for each module folder is very simple like mod_menu, mod_banners, mod_feed ,mod_login , mod_search etc.

Plugins – This folder contains subfolder for each of the Joomla plugin extension like authentication, search, system, content etc. Each plugin has specific role which is triggered on particular event.

Templates – This folder contains subfolder for each of the front end template. The back end templates are located in administrator/template folder.

Tmp – As the name suggest, this folder stores temporary files. For example , when new extension is installed Joomla places a archived copy of extension in tem folder and then unzips the achieve copy for installation into appropriate directory.

Administrator – This is main folder where all the backend files are located. Whenever any user enters from Joomla backend with URL like http://localhost/joomla/administrator/, the first file lifted is index.php from this administrator folder. You can browse inside this folder where you will see that it has folder cache, components, help, includes, language, manifests, modules and templates. So these folders serve for all the essential application requirement of back end.

  • Administrator/Cache -This folder contains the cache files for the back end of the site.
  • Administrator/Components – It contains all the Joomla components that are available in the Joomla back-end.
  • Administrator/Help – Contains XML file for links of Joomla help pages and HTML file help for local /online help
  • Administrator/Includes – This folder keeps all the files which connect to all the essential files for an active back-end session.
  • Administrator/Language – This is same as top level language folder which is used for front end language translation whereas this is used for back end language translation. Each language folder like en-GB has two language file with extension ini and sys.ini.
  • Administrator/Manifests – It contains three subfolder files, libraries and packages. These folders have files which support for one click update feature in Joomla. These files help in updating the Joomla installation.
  • Administrator/Modules – It has multiple subfolder for each of the back end Joomla module
  • Administrator/Templates – Contains template file for the back end
  • Administrator/index.php – First file which is used by the browser when administrator back end is accessed.

Top Root Level Files in Joomla

File

Function

configuration.php

It is created after successful Joomla installation. It has all the settings for site, database connection and other Joomla configurations.

htaccess.txt

It can be renamed to .htaccess and used with the Apache web server for mod_rewrite feature. It eliminates the index.php from all Joomla URLs and improves security of Joomla installation, if used.

index.php

This is the first file that is loaded by the web server for front end interface.

LICENSE.txt

Contains Joomla license information

README.txt

Contains general information about Joomla

robots.txt

Search engines robots automatically crawls into the web space for collecting the page index information. Robots.txt file can be used to grant permission or limit access to crawler into your web space. Some malicious robots can steal your web information if permission is open for all crawlers. The backend pages and other sub-folders which need not to be indexed by search engine can be blocked through this file.

robots.txt.dist

robots.txt.dist is a distribution/model file.

web.config.txt

It is similar to .htaccess file but it is used for web servers which are running Microsoft IIS.

Joomla Extension Development – Introduction to Joomla Extensions

Joomla extensions

Joomla is one of the most popular open source content management systems (CMS). Latest Joomla 3 is first major CMS with default mobile friendly interface. Joomla is always kept in between WordPress and Drupal for its best mix of functionality, extensibility and user friendly interface.

One of best feature of these open source CMS is extensibility as they are designed to be extended. Developers can add a new functionality or redesign available functionality through Joomla extensions.

From the general users point of view, Joomla extensions are add-on softwares for Joomla CMS to add functionality to website but developers point of view, Joomla extensions are components, modules, plugins, languages and templates.

Joomla development environment requires web server with PHP and MySQL. Joomla can be installed on either local web server or remote web server. It is better to have local development environment. You should also have basic knowledge of PHP,HTML and CSS.

Plugin

Plugins are the software tools that run in background and they are triggered by events. Think of authentication plugin which checks your credentials and decides whether access should be granted or not.

Now a days whenever you draw money from ATM, immediately you get a SMS. It means that event of payment confirmation triggers an application which sends a SMS message.

functioning of joomla plugin

Generally events are always there but they never come into our way. Joomla can check to see whether there are any methods that need to be triggered for given event. An event is to be fired when the program finds the methods tied to that event. You can run events from your software code and same can be treated as plugin.

Module

Modules are add on software tools which supply content to the webpage for displaying it on different positions like top header, right sidebar, left sidebar etc. Joomla modules generally render the information typically as small boxes. Modules are highly useful in presenting the content in various positions of webpage. These module positions are defined as per the template design. It is easier to visualize modules than plugin. The central area of the webpage is presented by the content received through component. Other than the central area, different modules are placed in webpage to present different type of information. For example menu module, a menu can be placed on the top of webpage, in the right/left sidebar or any other position available in the template. Different module positions are created during template design and these positions can be used by different modules to present different type of information. Social media modules, login module, menu module, search module are example of Joomla module.

In General terms, users can use a module when we they to show information on multiple pages and when that information is not the central focus of that page.

Joomla component and module positions

Component

In most cases, component provides information at central focus of the page. Components are the most complex type of Joomla extensions which provide main content area of the webpage. There are multiple modules displayed in a page but only one component is displayed at the central part of page.

Joomla uses model- view- controller (MVC) design pattern for component extensions. This creates separation between different tasks involved in preparing and displaying a webpage. Most of the components use database tables for storing and retrieving information. Generally Components have backend and front end interface just like Joomla CMS.

The core functionality of the website or the information on webpage is achieved through the component apps.

Languages

Joomla’s strength is its internationalization. It is currently translated into over 68 languages. This helps people to work in their own language. Language extensions implement Language translations. These are files with ini extension and include all the words which are displayed in the Joomla user interface. Joomla core uses the appropriate language file according to user selection and replaces all the text strings by the words cited in language file.

Templates

This is the last mile of a webpage which is observed by every website visitor. All the other extensions generate information and templates controls the way the information is presented on the webpage. Most of the people are someway familiar with term template and these are used in all the major CMS. It is part of information presentation layer which separates the information/content from the presentation. Joomla prepares complete document and transfers it to template. Then template renders the document into final HTML before sending it to browser.

Template decides about the presentation of each part of the document so this helps in changing presentation style of website without affecting other part of the website. Joomla uses at least two templates at a time, one for administrator back end and other for front end. Joomla has facility to use different templates for different pages.

How to Install Joomla in Local Computer

Joomla installation is similar to WordPress installation. All these CMS has reached into a matured phase where user convenience is taken proper care. Joomla requirements is PHP and MySQL but Joomla local installation requires server environment which can be created through XAMPP server installation. So look at the essential step for finally creating a Joomla site in local computer.

  1. Install XAMPP for local web server
  2. Create a database for Joomla
  3. Proceed for Joomla Installation

How to Install Joomla in Local Computer

  • Install XAMPP for local Web Server – Go to XAMPP site and download latest XAMPP package. It is better to download executable package. XAMPP installation is very simple, no separate settings or configurations required during installation.
  • Create a database for Joomla – Once XAMPP is installed in local computer, open XAMPP control panel and start apache and MySQL modules. In the MySQL module, click to admin button which will take you to phpMyAdmin. MySQL administration is done through phpMyAdmin. Click on database tab. This will show existing databases and a text area to create new database. Write name of new database (For example: newjoomla) for Joomla and click on create button. Your new database for Joomla will be created. The default user name for this database (newjoomla) is root and there is no password for this database in the default settings.
  • Joomla Installation – Download latest Joomla package and extract the zip file in your local computer. Give a name to the extracted folder, say mysite. XAMPP web directory start from htdocs folder so copy the extracted Joomla package folder e.g mysite into htdocs folder. (C:\xampp\htdocs\mysite). Now go to browser and type URL http://localhost/mysite/ . This will take you automatically to Joomla installation page where you can enter details. The first installation page requires general user details and site name etc. The next installation page is for database configuration. The default settings of database are:
    • Database type : MySQLi
    • Host Name : localhost
    • Username : root ( In case of XAMPP server, default database user is root)
    • Password : No password (In case of XAMPP server, there is no root user password in default setting)
    • Database Name: newjoomla (As per user created database. We created newjoomla database for demo purpose)
    • Table Prefix: Any letters and numeral combination. For local installation, beginners may leave this as per default prefix option.

    After the database setting, the last installation page shows all the Joomla installation settings and gives option for sample data installation into site. Look at all the installation settings and click on Install. This will complete the Joomla installation. After the installation, it ask for removal of installation folder from the Joomla directory. Click on remove installation folder button to remove the installation folder or it can be removed manually from the web directory of your site.

Now open the browser and enter the URL like http://localhost/mysite/ for looking into website. If you want to enter into administration page then enter URL like http://localhost/mysite/administrator/ .

This completes the installation of Joomla site.