A summary of new features introduced in Joomla! 1.5 templates:
- Model View Controller (MVC)
- This structure has been implemented in Joomla! 1.5, separating out logic, data and view of data. This means that the HTML, CSS and other code used to display Joomla! (to the browser or other device) is now completely separate from the Joomla! logic and is contained entirely within the templating system. This gives you greater control over how you wish to display the data, without having to access (hack!) core Joomla! code.
- Template positions
- The positions used in a template are now declared in templateDetails.xml. For example,
- Joomla version
- The version number is now declared in the template. For example, <install version="1.5" type="template"> replaces 1.0.x <mosinstall type="template">.
- Template parameters
- Template overrides
- The default system chrome ('views') for any module or component can now be overridden by the template. Default system chrome for each module and component can now be found in directories modules/mod_modulename/tmpl and components/com_componentname/views/layout/tmpl. The pagination chrome can also be overridden in pagination.php.
- Objects and Methods
- The Joomla! 1.5 framework has been re-engineered and now includes the JApplication layer, which contains a number of objects and methods you can reference from the template index.php. For example, <jdoc:include type="head" /> replaces the 1.0.x <?php mosShowHead(); ?>, <?php echo $mainframe->getCfg('sitename');?> replaces the 1.0.x <?php echo $mosConfig_sitename; ?> [N.B. This new method works for all configuration.php parameters], <?php // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); ?> replaces the 1.0.x <?php defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); ?>, <?php echo JURI::base();?> replaces the 1.0.x <?php echo $mosConfig_live_site; ?>.
- Module Positions
- There is a new way of checking which module positions have content to display on the current page. This logic can be used for collapsible columns (e.g. collapse the left or right column if no content is present). The 1.0.x mosCountModules function has been replaced by the $this->countModules and conditions have been added: you can now use '+', '-', 'or' or 'and', e.g. if ($this->countModules('left or right') == 1).
- Template file structure
- ===Typical Template Directory Structure===
Joomla! CMS templates use a structure of directories and files but they can vary from template to template
- Site templates (templates that change what your website looks like) can be found in the
/template directory. For example, if your template is called "mytemplate", then it would be placed in the folder:
- Administrator templates (templates that change what the administrator section of the site looks like) can be found in the
/administrator/templates directory. For example, if your administrator template is called "myadmintemplate", then it would be placed in the folder:
A typical template for Joomla! will include the following directories:
- css - contains all the .css files
- html - contains template override files for core output and module chrome
- images - contains all images used by the template
- language - contains additional language files used by the template
Depending on the complexity and design of the template is may also contain:
Example structure with files
Typical path of a template is
<root>/public_html/domain-name/template/<name of your template> which will contain the following directories and files based on your template.
It is most common for a template to have at least the following files:
- Provides the logic for the display and positioning of modules and components.
- Provides the logic for the display of the printer friendly page, "E-mail this link to a friend." etc.
- Provides a method to handle errors such as 404, page not found error.
- favicon icon file
- Handles the presentational aspects of the template including specifications for margins, fonts, headings, image borders, list formatting, etc. The .css files may also be located in the
- Holds meta-information related to the template and is used by the Installer and the Template Manager.
- template_preview.ext - replace .ext with the extension format of the image (.jpg, .png, .gif)
- Generally a 600x400 pixel image that is shown when the cursor is clicked on the thumbnail image in Template Manager:Templates, not Template Manager:Styles. This gives the Administrator a pop up modal window of the template before applying it to the Site.
- template_thumbnail.ext - replace .ext with the extension format of the image (.jpg, .png, .gif)
- Generally a 200x150 pixel thumbnail image that is shown when viewing the Template list in Template Manager:Templates, not Template Manager:Styles . This gives the Administrator a thumbnail view of the template before applying it to the Site.
- Accessibility and Standards
- Using template overrides, it is possible to create tableless Joomla! The new parameters and overrides encourage improvements in web standards, accessbility, search engine optimisation (SEO) (source ordering and markup), language (left to right support) and browser optimisation (browser-dependent CSS).
- Default system template
- The system template (in the /templates directory) has been expanded to include more CSS files and a standard modules.php (module chrome) and component.php (component chrome). You can include some of the default CSS files in your template. For example,
<link rel="stylesheet" href="templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="templates/system/css/general.css" type="text/css" />
- These are included in <jdoc:include type="head" />
- Error handling
- More default error pages are included in the system template (403.php and 500.php) and a new error message call has been introduced, which must be referenced in your template by <jdoc:include type="message" />