I wanted to create a simple Joomla 3.x plugin to show HTML on every page including the administration pages. It was extremely difficult to find any sample online as I did not know the what to look for. Here is a very quick tutorial on how to show “Hello World” on each and every Joomla page including administration pages.
Prerequisites
Joomla 3.x
JOOMLA_ROOT is the root folder where Joomla is installed.
Quick Hint: We are going to create system plugin (system = a type of plugin group that runs for every page, plugin = a type of Joomla extension).
Plugin Name: PramukhIME
Steps
Note: Bold named folder/file must exist in order for the plugin to function.
Create a folder JOOMLA_ROOT/plugins/system/pramukhime (Why here? because it is a system plugin called PramukhIME)
Create a file JOOMLA_ROOT/plugins/system/pramukhime/pramukhime.xml and put the following code in it
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
<!-- This name tag is a user friendly name and you can name it the way you want. -->
<name>PramukhIME</name>
<author>Vishal Monpara</author>
<creationDate>October, 2017</creationDate>
<copyright>Copyright (C) 2017 Vishal Monpara. All rights reserved.</copyright>
<license>see license.html</license>
<authorEmail>myemailaddress@something.com</authorEmail>
<authorUrl>www.vishalon.net</authorUrl>
<version>1.0.0</version>
<files>
<!-- plugin tag value must be plugin name and the php file must be the pluginname.php -->
<filename plugin="pramukhime">pramukhime.php</filename>
</files>
</extension>
Create a file JOOMLA_ROOT/plugins/system/pramukhime/pramukhime.php and write following code in it
<?php
/**
* @package Joomla.Plugin
* @subpackage System.PramukhIME
*
* @copyright Copyright (C) 2017 Vishal Monpara. All rights reserved.
* @license see license.html
*/
defined('_JEXEC') or die;
class PlgSystemPramukhIME extends JPlugin
{
protected $app;
public function onAfterDispatch()
{
// Uncomment following line to add your own css/javascript file in head
//JHtml::_('stylesheet', 'media/path/to/pramukhindic.css', array('version' => 'auto', 'relative' => false));
//JHtml::_('script', 'media/path/to/pramukhime.js', array('version' => 'auto', 'relative' => false));
}
public function onAfterRender()
{
// Get page html which includes full page
$body = $this->app->getBody();
$content = "<h1>Hello World</h1>";
// locate </body> tag and insert our own content right before </body>
$body = str_replace('</body>', $content . '</body>', $body );
// set the body
$this->app->setBody($body);
}
}
That’s it. You have made your first system plugin.
Installation
- Login to the Joomla Administration
- Go to Extensions (top menu) > Manage > Discover
- It will list the plugin as plg_system_pramukhime
- Select the checkbox for this plugin and click “Install” on the top left corner.
- So far the plugin is installed but yet to be enabled.
- Go to Extensions > Plugins
- Search for pramukhime and it will show plg_system_pramukhime
- Click on the box under “Status” to enable the plugin
- As soon as you enable it, you will see Hello World in the bottom.
- Go to the front page and you will also see Hello World in the bottom.
Leave a Reply