In this category I will try to write about creating extensions in Joomla!

 

First, I will start with creating components.

This example, I took from Professional Joomla!, which I simplified, this is not MVC, as much as I think, but it is good as a starting point.

We will create three files: admin.hellopost.php, hellopost.php and hellopost.xml.

hellopost.xml we need for installation and it look like this:

<?xml version="1.0" encoding="utf-8"?>
<install version="1.5.0" type="component">
<name>HelloPost</name>
<author>Stanko Milosev</author>
<version>1.0.0</version>
<description>Hello world, posting from form</description>
<files>
<filename component="com_hellopost">hellopost.php</filename>
</files>
<install>
</install>

<uninstall>
</uninstall>
<administration>
<menu>Hello post</menu>
<files>
<filename component="admin.hellopost">admin.hellopost.php</filename>
</files>
</administration>
</install>

 

 

Now hellopost.php:

 

 <?php
/**
* @version $Id: guestbook.php 5203 2007-06-15 02:45:14Z DanR $
* @copyright Copyright (C) 2007 Dan Rahmel. All rights reserved.
* @package Guestbook
* This component displays guestbook entries and allows the addition
* of entries from registered users.
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

// Check the task parameter and execute appropriate function
switch( JRequest::getVar( 'task' )) {
case 'hello':
hello();
break;
default:
displayHello();
break;
}

// Process data received from form.
function hello() {
echo JRequest::getVar( 'hello' );
}

// Output a list of guestbook entries
function displayHello() {
?>

<form action="index.php?option=com_hellopost&task=hello" method="post" id="formica" name="formica">
Say:
<input type="text" size="20" name="hello" value="Hello world"/>
<input type="submit" value="Submit" name="Submit"/>
</form>


<?php
}
?>

 

With JRequest::getVar( 'task' ) we get variables which we posted ($_POST in pure PHP), my problem is that I coudn't do it with get method.

In case that JRequest::getVar( 'task' ) is equal hello (in PHP would be $_POST['task']=='hello'), than we call hello function in other case we call displayHello.

admin.hellopost.php I didn't change, but I think that file could be even empty. Component you can download from here.