Site Cloner PHP Script
Bargain Hunter PHP Script
Job Hunter PHP Script
Site Login and Access Control PHP Script

Joomla RSS Feed Links

Joomla has all sorts of plugins and methods for which to create rss feeds. All in all, the RSS feeds will have a specific url like

Once you have the link, you can use it on your page to allow your users to subscribe to your feeds. If you have good, regular content, it is a simple method to allow your subscribers to keep up to date.

Joomla 1.5 Security

If you use open source software like Joomla, you will often read about security warnings, updates and hacks. People who work at hosting companies can be prime suspects since they have access to so many passwords on shared accounts. And, turnover in some comapnies can be very high. However, the web is rife with individuals who spend their time invading other’s space. In the web world, the best you can do is the best you can to defend yourself, then more. Often, there is a solution to your problem. With Joomla 1.5, there are many things you can do to protect yourself. Below, are a few such preparations.

1. Use a custom prefix to help safeguard against sql injections. By default, Joomla uses jos_ and that is what an injector would try to inject into.

2. Disable administrator reset password. Disabling the reset password takes away from anybody who can reset the password with your email address.

a) Open file: components\com_user\models\reset.php

b) Look for:

        // Build a query to find the user
        $query    = ‘SELECT id FROM #__users’
                . ‘ WHERE email = ‘.$db->Quote($email)
                . ‘ AND block = 0’
c)  Add line:
                . ‘ AND usertype NOT LIKE \’%Administrator%\”;

3. Alter files components\com_content\views\article\view.html.php and components\com_content\views\frontpage\view.html.php
The idea here is to not allow document revisons. The user could login, but he would not be able to make changes.

        $access->canEdit    = $user->authorize(‘com_content’, ‘edit’, ‘content’, ‘all’);
        $access->canEditOwn    = $user->authorize(‘com_content’, ‘edit’, ‘content’, ‘own’);

        Change To:
        $access->canEdit   = $user->authorize(‘com_content’, ‘edit’, ‘content’, ‘none’);
        $access->canEditOwn   = $user->authorize(‘com_content’, ‘edit’, ‘content’, ‘none’);

        $access->canPublish    = $user->authorize(‘com_content’, ‘publish’, ‘content’, ‘all’);

        Change To:
        /*$access->canPublish    = $user->authorize(‘com_content’, ‘publish’, ‘content’, ‘all’);*/

4. Download component IP Filter
a) Set login access for the specific user from a specific ip
The admin would only have access from specific computers. If you need to change this in an emergency, use phpmyadmin to adjust ips or delete entry.

5. Install a plugin to redirect backend access. For example, would create a 404 page error because the admin needs to add code like to view a username and password field.

6. Install Joomla Hackguard plugin. The plugin filters $_POST, $_GET and $_COOKIE variables, sanitizes data and more. The plugin is available for Joomla 1.5-2.5. The plugin was designer by the hosting company Siteground.

7. Try to have the latest version and install patches as needed.

We have disabled anyone from having the ability to edit content from the front end. We have allowed private entry to the backend. Onle the admin can login to the frontend to edit forums and other components from a specific ip. We have also limited chances for successful sql injections and have filtered tainted code.

Customizing Joomla 1.5 Registration

To customize registration text,
1) Open file: components\com_user\views\register\tmpl\default.php
2) Near line 18 look for the form tag ‘<form>’
3) You can add custom text above or below the form
<div style=”margin-top:20px;margin-bottom:10px;color:blue;”>New Accounts Require Email Activation</div>
action=”<?php echo JRoute::_( ‘index.php?option=com_user’ ); ?>” method=”post” id=”josForm” name=”josForm” class=”form-validate”>

To alter the Joomla 1.5 activation message,
1) Open file: components\com_user\controller.php
Note: The activation() function is where you can add custom text. Alternatively, you can look for the JTEXT constants; such as JText::_( ‘REG_ACTIVATE_COMPLETE_TITLE’ ) and alter the file language/en-GB/en-GB.com_user.ini.

Below, a sample is shown which adds custom text inside the validate() function.

 $message->title = JText::_( ‘REG_ACTIVATE_COMPLETE_TITLE’ );
 $message->text = JText::_( ‘REG_ACTIVATE_COMPLETE’ );
 echo “You can now <a href=\”\”>LOGIN HERE!</a>”;
            or put at bottom of activation() function

            $message->title = JText::_( ‘REG_ACTIVATE_COMPLETE_TITLE’ );
            $message->text = JText::_( ‘REG_ACTIVATE_COMPLETE’ );
            echo “You can now <a href=\”\”>LOGIN HERE!</a>”;
            or put at bottom of activation() function

            // Page Title
            $document->setTitle( JText::_( ‘REG_ACTIVATE_NOT_FOUND_TITLE’ ) );
            // Breadcrumb
            $pathway->addItem( JText::_( ‘REG_ACTIVATE_NOT_FOUND_TITLE’ ));

            $message->title = JText::_( ‘REG_ACTIVATE_NOT_FOUND_TITLE’ );
            $message->text = JText::_( ‘REG_ACTIVATE_NOT_FOUND’ );
        echo ‘<br/><br/>’;
        $view->assign(‘message’, $message);
        echo “<br/>Registered members can <a href=\”\”>LOGIN HERE!</a>”;
   //end validate()function }

Joomla Custom Registration Messages

Joomla is often used as a portal for which users can sign up and login. Once they login, they can use the site as you desire. Meanwhile, when a new user does register, they often receive a registration confirmation message via email. The message is rather standard. However, you can always change and customize many Joomla user messages within a file called en-GB.com_user.ini. The file is located in the path language/en-GB/en-GB.com_user.ini. Below is an example of how messages can be changed.

SEND_MSG=Hello %s,\n\nThank you for registering at %s.\n\nYou may now log in with the username and password you registered with.
SEND_MSG_ACTIVATE=Hello %s,\n\nThank you for registering at %s. Your account is created and must be activated before you can use it.\nTo activate the account click on the following link or copy-paste it in your browser:\n%s\n\nAfter activation you may login to %s using the following username and password:\n\nUsername: %s\nPassword: %s
SEND_MSG_ADMIN=Hello %s,\n\nA new user has registered at %s.\nThis e-mail contains their details:\n\nName: %s\nE-mail: %s\nUsername: %s\n\nPlease do not respond to this message. It is automatically generated and is for information purposes only.

You could add a url and a link for them to login. Below shows how the code was modified:

SEND_MSG=Hello %s,\n\nThank you for registering at %s.\n\nYou may now log in to http://www.example/mysubdirectory/filename using the username and password you registered with.

How To Make a Custom Joomla Template

How To Make A Custom Joomla Template Making a Joomla template is very similar to hand-coding a typical html/css template. However, there are slight changes in the coding and concepts. The main file which is responsible for the output of a Joomla template is index.php. Index.php can be coded between the body tags with plain old div tags. But, you can make it modular by adding tags which can be used to add custom modules. The page which holds the details for module positions is templateDetails.xml. If the name is in templateDetails.xml, you can assign a module the position with Joomla’s module manager in the administrator backend.

Stage#1: Joomla Doctype and Head
The top of index.php should have the following code which includes details about the doctype and head tags. The code is shown below.

defined(‘_JEXEC’) or die(‘Restricted access’);
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “”>
<html xmlns=”” xml:lang=”<?php echo $this->language; ?>” lang=”<?php echo $this->language; ?>”>

<jdoc:include type=”head” />
<link rel=”stylesheet” href=”<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/template.css” type=”text/css” />

<!–[if IE 6]>
<link rel=”stylesheet” href=”<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/ie6.css” type=”text/css” />

<script type=”text/javascript”>
function showstuff(){
function hidestuff(){

Stage#1: The body of index.php
The body of index.php should have the following code which includes div tags for the body of the template.

<div id=”container_1″>
<div id=”container_2″>
<div id=”container_3″>
<div id=”header” style=”margin-top:80px; height:auto;width:970px;”>
<div style=”inline-block; color:white;”>
<ul style=”display:block; background-color:#000000; padding:0px;”>
<a style=”padding:5px 0px 5px 0px;” onmouseout=”hidestuff()” onmouseover=”showstuff()”

href=”../services”><li style=”display:inline-block; margin-left:0px; padding:5px;”>List 1</a>
<ul id=”submenu” style=”visibility: hidden; display:block;margin-top:5px; padding-left:0px;

margin-left:0px;  position:absolute;visibility: hidden;”>
<a onmouseout=”hidestuff()” onmouseover=”showstuff()” href=””>
<li style=”background-color:blue; margin-top:0px; padding:10px;list-style-type:none;”>Drop down

<a onmouseout=”hidestuff()” onmouseover=”showstuff()” href=””>
<li style=”background-color:blue; margin-top:0px; padding:10px;list-style-type:none;”>Drop down

<li style=”display:inline-block;padding:5px;”>List 2</li></ul></div>
<div style=”clear:both;”></div>
<div id=”content” style=”margin-top:300px;”>
<jdoc:include type=”component” />
<div style=”clear:both;”> </div>
<div id=”bottom”>
<div id=”footer”>
<jdoc:include type=”modules” name=”footer” style=”xhtml” />
<div id=”debug” style=”display:none;”><br/><br/>
<jdoc:include type=”modules” name=”debug” style=”xhtml” />


Stage#3: Adding Modules and positions to index.php
The body of index.php can be adjusted to add modules in desired div tags.

The code to add a module looks like this:

<jdoc:include type=”modules” name=”user3″ style=”xhtml” />
<jdoc:include type=”modules” name=”footer” style=”xhtml” />

To only use a module if it is enabled on a page, you can use the following code:

<?php if($this->countModules(‘right’)) : ?>

<!– Add code such as divs here –>

<?php endif; ?>

Stage#4: Adding Modules to templateDetails.xml
To use the module, you need to make sure it exists in the templateDetails.php file.

Here is a list of module positions and how they should be presented within templateDetails.xml


Joomla Extensions For Profit

In the past, I took interest in Joomla web development.  It led to the addition and modification of free and paid extensions. Eventually, with more practice, I took interest in the creation of Joomla extensions; both free and commercial. When you add extensions to the Joomla directory, you are required to provide links to the downloads and a link to the forum. Over the course of 3 years, more than 44,000 views existed in my most popular extension. The extension had a free and commercial extension.

In a nutshell, the numbers went like this:

44,000 views for an extension in the directory.

That led to about 12,000 downloads for all versions of that extension, which was about 25%. Overall sales was less than 10.
I had built 2 other commercial extensions and the numbers were all under a 1% conversion.  In this case, a conversion was a sale.  Since I had bought many extensions and knew they were worth the few dollars by comparison of others, I took it as a positive experience for web development skills, but a negative to keep on the track for commercial extension development.
After seeing and reading several reports from other developers who received almost nothing is donations vs number of downloads, I leant towards Joomla extension development as a bad idea for trying to make an extra buck.

After analyzing my forum and reading many other developer forums, I reached a personal conclusion for which most people trying to build applications with the Joomla CMS were trying to do it freely using code they knew nothing or very little about. Asides from gathering data and enjoying helping others, the forum positives were outweighed by the negative users who had no problem asking for help and thought a free extension came with unlimited free advice.  

Another personal contradiction to allowing free extensions for downloads is the fact that you can allow non-programmers to compete with you since they may sell web development by using extensions for which the customer thinks they are brilliant, but, they are just adding free code which took no programming knowledge.

This does not conclude that creating Joomla extensions is valuable for nothing. I am sure some very elaborate extensions are profitable. Also, creating extensions could have some positive spin-off like getting the attention of the employer when applying for a web development position.

Custom Script to Use Joomla Framework without Using Joomla

You may want to use Joomla framework since all tables are nicely setup, or you want tom use parts of a Joomla installation and custom code other parts. Coding PHP / mySQL to add users to the Joomla users table is not much different than using a custom users table.  The custom form should be used from the beginning to ensure passwords all use the same methods of encryption. If you use Joomla password system for a few users then switch, you could have login issues.  The key is to only use the custom registration form to keep everything in sync.

However, if you plan to use Joomla CMS and an application running on its own at the same time, you must consider the 3 tables which holds the 3 records for each user. If you just create a user to the user table, the user can be used in a standalone application, but not the Joomla CMS.

Here is some sample code for which you can take a pure php / mySQL form and add a user which can be used with the Joomla CMS or with pure PHP / mySQL.

<?php //check to see form is filled out and session for Super admin exists. We need the name, username, email address and password. The rest we can just insert values…like a typical Joomla registration
if ($_SESSION[‘my_session_id’] && $_POST[‘name’] && $_POST[‘username’] && $_POST[’emailaddress’] && $_POST[‘pword’]) {
$name = $_POST[‘agent_name’];
$username = $_POST[‘username’];
$emailaddress = $_POST[’emailaddress’];
$password = md5($_POST[‘pword’]);
$usertype = $_POST[‘usertype’];
$gid = $_POST[‘gid’];

$params = “admin_language=

$command = “INSERT INTO jos_users VALUES (”, ‘”.addslashes($_POST[name]).”‘, ‘”.addslashes($_POST[username]).”‘, ‘”.addslashes($_POST[emailaddress]).”‘, ‘$password’, ‘”.addslashes($_POST[usertype]).”‘, 0, 0, ‘”.addslashes($_POST[gid]).”‘,   now(), now(), ”, ‘$params’)”;
$result = mysqli_query($db, $command);


$command = “INSERT INTO jos_core_acl_aro VALUES (NULL, ‘users’, ‘$need_id1’, ‘0’, ‘”.addslashes($_POST[name]).”‘, 0)”;
$result = mysqli_query($db, $command);


$command = “INSERT INTO jos_core_acl_groups_aro_map VALUES (’18’, ”, ‘$need_id2’)”;
$result = mysqli_query($db, $command);


<?php //Here is the form ?>

<form method=POST action=”<?php echo $_SERVER[‘SELF’]; ?>”>
<td align=right>
<td align=left>
<input type=text size=25 max=50 name=” name”>
<td align=right>
<td align=left>
<input type=text size=25 max=50 name=”username”>
<td align=right>
Agent Email:
<td align=left>
<input type=text size=25 max=50 name=”emailaddress”>
<td align=right>
<td align=left>
<input type=password size=12 max=12 name=”pword”>
<td align=right>

<td align=left>
<input type=”hidden” size=12 max=12 name=”usertype” value=”Registered”>
<td align=right>

<td align=left>
<input type=”hidden” size=12 max=12 name=”gid” value=”18″>
<td colspan=2 align=center>
<input type=submit value=”SUBMIT”>

user table.


//connect to databse

//basic form validation
if (empty($old_password ) || empty($new_password) || empty($confirm_password) || ($confirm_password != $new_password) || ($old_password != $old_pass)){
echo “<b>PLEASE FILL IN ALL DATA.</b><br/><br/>”;

$name = $_POST[‘name’];
$username = $_POST[‘username’];
$email = $_POST[’email’];
$password = md5($_POST[‘password’]);
$usertype = $_POST[‘usertype’];
$gid = $_POST[‘gid’];

$params = “admin_language=

$command = “INSERT INTO jos_users VALUES (NULL, ‘”.addslashes($_POST[name]).”‘, ‘”.addslashes($_POST[username]).”‘, ‘”.addslashes($_POST[email]).”‘, ‘$password’, ‘”.addslashes($_POST[usertype]).”‘, 0, 0, ‘”.addslashes($_POST[gid]).”‘,   now(), now(), ”, ‘$params’)”;
$result = mysqli_query($db, $command);

Here is the form for which to add Registered Users into Joomla Users Table

<form method=POST action=”<?php echo $_SERVER[‘SELF’]; ?>”>
<td align=right>
<td align=left>
<input type=text size=25 max=50 name=”name”>
<td align=right>
<td align=left>
<input type=text size=25 max=50 name=”username”>
<td align=right>
<td align=left>
<input type=text size=25 max=50 name=”email”>
<td align=right>
<td align=left>
<input type=password size=12 max=12 name=”password”>
<td align=right>

<td align=left>
<input type=”hidden” size=12 max=12 name=”usertype” value=”Registered”>
<td align=right>

<td align=left>
<input type=”hidden” size=12 max=12 name=”gid” value=”18″>
<td colspan=2 align=center>
<input type=submit value=”SUBMIT”>

Retrieving Post Variables from a Joomla Form

To retrieve the values from a Joomla component you can use JRequest::getVar() to grab the variable and use a cookie to set the variable’s value. Cookies can be made in all content management systems like Joomla, Worpdress and Drupal for which they can be retrieved elsewhere. Importing sessions is another story.

Below is an example to retrieve form variables like first name, last name and email address and then make cookies for all values. 

$firstname=JRequest::getVar( ‘firstnm’,’firstnom’,’default’,’string’ );
$lastname=JRequest::getVar(‘lastname’, ‘default’, ‘post’, ‘string’);
$email_address=JRequest::getVar(’emailaddress’, ‘default’, ‘post’, ‘string’);
setcookie(“firstnm”, $firstname, time()+ 7200, “/”);
setcookie(“lastname”, $lastname, time()+ 7200, “/”);
setcookie(“email”, $email_address, time()+ 7200, “/”);

To use the variables in scripts outside of Joomla you only need to echo the value.

The code below is an example to autofill a form within another PHP script using a cookie made in Joomla. Importing a cookie uses the straight PHP code function setCookie() within Joomla.

<input type=”text” name=”lastname” value=”<?php echo $_COOKIE[‘lastname’]; ?>”/>

Sorting Joomla Articles


To sort Joomla articles,
1) Login to admin
2) Content >Article Manager
3) Select category or leave it and it will display all by default.
4) Click the order you desire from the tools that display:
Published, FrontPage, Order, Hits, Date etc
Note: Date will allow you to see the descending order of most recent articles
5) On the bottom, 20 articles are listed by default, but the ‘Display’ can be changed to numbers like 50, 100 or all.

Login to Joomla Users Table Outside Joomla

You may want to use the Joomla Framework in combination with standalone PHP applications. There can be many reasons for this; such as bypassing Joomla extensions and modules to use different software. Also, in many cases, it is much faster for a programmer to code pure php / mysql than it is to write pure php / mysql and convert it to a Joomla extension. If this is the case, you will probably want to tie into the Joomla Users table. If you do this, the simplest method is to create a login form that encrypts the password with md5. Joomla uses md5+salt by default; but shorter md5 strings work.

Now, your new tables with standalone php scripts can be joined and used with any Joomla tables.

Virtuemart Product Details

To remove Ask a question about this product in versions 1.1.8 and 1.1.9,

1) Open the file /public_html/components/com_virtuemart/themes/default/templates/product_details/flypage.tpl.php
2) a) Comment echo $ask_seller to /* echo $ask_seller*/
b) Remove the table row code:
      <td colspan=”2″><?php echo $ask_seller ?></td>

Joomla Meta Description For Home Page and Other Pages

The description and keywords for the Joomla home page can be set in the Global Configuration.

To access the global configuration,
1) Login to Joomla admin
2) Select >Site >Global Configuration
3) Change Description and keywords.
4) Save changes.

Remove Joomla Generator Tag

You may want to remove the Joomla generator tag from the head of the document and from appearing on each and every page of the website.

To remove the generator tag,
1) Open the file head.php located in:

2) Near line 87 comment out a line with generator like:
$strHtml .= $tab.'<meta name=”generator” content=”‘.$document->getGenerator().'” />’.$lnEnd;

Virtuemart Quick Start Guide

1) Download Virtuemart
2) Extract Zip file
3) Install Component
4) Install Modules; such as mod_virtuemart_cart, mod_product_categories and mod_productscroller
Note: Out of the box, only ‘Link List’ for mod_product_categories did not trigger an error
5) Edit configuration (Global, Site, Site>Layout>Configuation, Security, Shipping, Checkout, Downloads, Feed Configuation)
//put custom stuff here
6) Remove pdf and email to friend link, rss, etc
7) Change so registered and non registered users can use the cart
8) Deselect ‘Show Footer’
9) Add categories and subcategories
10) Add a dummy item or 2 to see how it works. With shop.browse.php for virtuemart 1.19 you may have to edit line 86 so subcategories with items show the products.
11) Remove ‘Show Cookies alert’.
12) To set the amount of categories in a row,
a) Edit categoryChildlist.tpl.php near line 6 and change from 4 to your desired number.
13) To remove the large title ‘Categories’ from the main page,
a) Edit shopIndex.tpl.php and comment out near line 8:
echo “<h4 style=\”margin-bottom:-20px;padding-bottom:0px;\”>”.$VM_LANG->_(‘PHPSHOP_CATEGORIES’).”</h4>”; to
//echo “<h4 style=\”margin-bottom:-20px;padding-bottom:0px;\”>”.$VM_LANG->_(‘PHPSHOP_CATEGORIES’).”</h4>”;
14) To remove Ask a question about this product in versions 1.1.8 and 1.1.9,
a) Open the file /public_html/components/com_virtuemart/themes/default/templates/product_details/flypage.tpl.php
2) i) Comment echo $ask_seller to /* echo $ask_seller*/
ii) Remove the table row code:
      <td colspan=”2″><?php echo $ask_seller ?></td>
15) To change product thumbnail size,
a) Goto Configuation >Site
b) Change thumbnail width and height.
17) To make custom form fields,
a) Select Manage User Fields >Make a custom checkout form by selecting new, publish and show
18) To make payments possible,
a) Select List Payment Methods >Paypal >Add Paypal Email Address >Have it published>Save
19) To remove ‘Agree to Terms and Service’,
a) Virtuemart >Manage User Fields >Unpublish agree with the field title ‘I agree to the terms and service’
20) To add a tax rate,
a) Virtuemart >Tax >Add Tax Rate >Select a country >Create a tax rate >Save
b) Open a product and add the custom rate to any desired product.
21) To remove all or change shipping methods,
a)Configuratiion >Shipping >Select or Deselect

Edit Store Information
Here is where the currency is set.
The home page text for a Virtuemart menu item can be changed in the bottom editor


After the cart works, there may be styling issues. One such issue is the spacing between the Categories, shop info at the top and the categories below. The file shopIndex.tpl.php allows you to remove excess <br/> elements and even add new style to h4 category for margin.

You may want to change the cart image. The mod_virtuemart_cart module is image is located:

Joomla Backend Menu

There are several methods for which to change access to the backend menu. One is to alter admin.installer.php which would trigger an error message when one clicks Extensions.

Another method, the better method, is to remove the menu item from the backend.

To remove the menu item,
1) Goto administrator >modules >mod_menu >helper.php
2) Look for:
near line 196
* Extensions SubMenu
        if ($installModules)

\$menu->addChild(new JMenuNode(JText::_(‘Extensions’)), true);
\$menu->addChild(new JMenuNode(JText::_(‘Install/Uninstall’), ‘index.php?option=com_installer’, ‘class:install’));
3) Comment out the line above.

Changing Joomla 1.5 Backend Menu

The backend menu has various features which can be used by managers, administrator and super administrators. In general, a manager can access the backend and control website content for which he has permissions. Super administrators on the other end, can do much more. At times, issues can arise because manager priviledges are not enough while super administrators can allow a client to much control. If your hosting and permormance are issues, then so should be the makeup of the Joomla website. An example of a client having super administrator priviliges in a potential negative situation is one for which he can add extensions. Sure, in most cases this can be fine, while in other cases it could cause the installation of extensions which cause intense resource consumption. In a higher traffic situations, this site is a bad grape ruining performance for others.

To limit what can be done in the Joomla backend, such as installation of extensions and plugins, you need to hack core files to create a custom menu so that the user cannot add and change extensions. Read more here! 

Uninstalling a Joomla Plugin

To uninstall a Joomla plugin,
1) Login to Joomla backend.
2) Select Extensions >Install/Uninstall >Plugins >Select the plugin you want to uninstall >Select Uninstall

Sometimes, the plugin may not install automatically.

To manually remove a plugin,
1) Goto Extensions >Plugin Manager >Look for your plugin and what ‘Type’ it is.
2) Login to server with FTP or Cpanel
3) Look in Joomla root directory and open plugins folder.
4) Find plugin files and delete them.
5) Open up phpMyAdmin or mysql> and open the databse for your Joomla site.
6) Look in plugins
7) Remove plugin entry from the plugin table.

Joomla Articles URL

Joomla articles can be added to any menu. It is a very convenient method for which content can be added to any menu item.

To select an article in a menu,
1) Select Article > Layout
2) Select an Article
3) Save

To change a menu item to an article,
1) Select the link of the item in a menu.
2) Select Change Type.
3) Select Article > Layout
4) Select an Article
3) Save

Alternatively, you can always make the menu type an external url for an article.

For example, the url:

could be an external link for a menu item with the following url:

Upgrading Joomla 1.5 is a standard procedure to apply patches and security fixes.

To ugrade to the most recent version,
1) Backup the original fiules and database.
2) Download the appropriate upgrade version from
For example, if you use Joomla 1.5.10 you would download:
3) Unzip the package on your pc.
4) Use FTP or Cpanel ‘File Manager’ to transfer the updated files to the server. Make sure you do not remove any components or installed extensions. To keep this from happening, always overwrite files but do not delete files.
5) Login to the administrator backend and you will see the new version.

Joomla Email Activation

By default, Joomla will send an email to a registered user to activate an account. For obvious reasons, this feature has many benefits. However, you have an option to remove this feature.

To add users to backend without sending them an email,
1) Open the following file:

Near line 189, comment out the following line:
// JUtility::sendMail( $adminEmail, $adminName, $user->get(’email’), $subject, $message );

In the Joomla administrator backend,
1) Click Site > Global Configuration > Click System Tab > New User Account Activation > Select ‘No’.

Remove Joomla Meta Tag Generator

If you view the source code after a Joomla installation, you will see:
<meta name=”generator” content=”Joomla! 1.5 – Open Source Content Management” />

If you want to remove this code, there are a couple of ways to do so.

Here is one simple method to remove the generator tag
1) Open the file:
2) Comment the following line:
$strHtml .= $tab.'<meta name=”generator” content=”‘.$document->getGenerator().'” />’.$lnEnd;

The new line is:
//$strHtml .= $tab.'<meta name=”generator” content=”‘.$document->getGenerator().'” />’.$lnEnd;

3) Save the file.

With Joomla 1.5, resetting a username or password is a no-brainer.

To reset the username or password for any user with Joomla 1.5,
1) Login to the Joomla administrator.
2) Select ‘Site’ from the main menu.
3) Select a User
4) Change or modify username and / or password.
5) Save the changes.

Joomla has a wide variety of wysiwyg editors. They can help speed up many aspects of coding; such as text color, linking, etc. However, the real power lies in the source code option for which you can troubleshoot and customize the html with div tags, ids, classes, span tags, and even spell checking. Typically, the editors in wysiwyg mode do not spell check.

If you do any substantial editing in Joomla, using the best of both worlds (source code and non-source code) will allow very detailed, quick styling.

Joomla SEF Components

There are several SEF components for Joomla; such as ACESEF, sh404SEF and SEF Advance. Using SEF components will rewrite URLs and provide a nice, clean look in the browser bar. Using Joomla’s built-in SEF urls with .htaccess works fine in many scenarios too. 

Commercial SEF Components

Many extensions work well, especially if they are up to date. Some come with nice features like flood protection and url naming for specific extensions.  They are excellent products. However, issues could arise when some extensions and components (no matter which ones) are mixed with each other. For example, it could make great urls in a forum one day, then using an upgrade fropm the same forum could make SEF urls uglier than the built-in Joomla SEF. Upgrading is where things can go haywire. Issues can arise if PHP is upgraded on the server and the extension was created prior to the upgrade. Furthermore, as some companies evolve, so does the pricing. Some may want a yearly license, etc.

The extensions can do do an excellent job and offer excellent control for which to name the URLs. But, well written articles, appropriate content and good link management should still have priority over how a string is displayed in the address bar.

Joomla Built-in SEF

Using SEF urls with Joomla does make a more professional look. Using the built-in SEF is free and can be set in the global configuration. Renaming the htaccess.txt to .htaccess will allow you to make custom urls. Personally, sef urls are something I would always have on a Joomla website. Since a good home page, link structure, page titles and excellent related content does  more for SEO and nobody really cares about what they read in the address bar, using sef is the icing on the cake…. completing a professional look rather than some weird looking string.

Joomla, as a content management system offers unlimited ways to create an organized website. One of the various tools to use with Joomla is to implement a blog.

Built-in Blog
To create a blog with the default Joomla CMS,
1) Add a new item to a menu.
2) Select articles > category blog layout or section blog layout.
3) Add appropriate figures for leading, intro, columns, links.
You can experiment with these numbers until you have the desired amount of leading articles, columns and links. With a blog layout, you have all articles from a section or category accessible of the first page. This is a decent looking layout and each page is very customizable with the content editor.

Blogging Component

Another option for adding a blogging component is to download a blogging component, install it, configure the backend parameters and edit php/css files to customize it (if necessary).

There are many blogging components such as myBlog, jaggyBlog, EasyBlog, WordPress Blog for Joomla, RSBlog and Smart Blog. Some are even free.

Personally, I have taken a liking to myBlog and JaggyBlog. MyBlog is a little more expensive, but integrates well with JomSocial and JomComment. JaggyBlog is a steal for the price, and you can set menu items to only show entries for a specific category, or all posts.

A downside to blogging components is that you may not have the control you like over sidebar categories. A way around this is to use custom menus with custom article links. This way, you can make custom article groupings; even to those which exist in different sections or categories.

Adding WordPress to Joomla

One option to add a blogging platform is to install or FTP WordPress into a subfolder within the root Joomla directory. With this option, you can use the existing database or create a new database. If you use the existing database, WordPress will use a different database prefix. Using a separate database will help lighten the load from the Joomla database. This method of using WordPress works fine if you don’t need the blog to be integrated into the Joomla CMS; such as with a member site; or with various blog users. Alternatively, if only bloggers are hired, using the separate installation keeps them only where you want them.

To access the WordPress pages, you simply use an external link in the Joomla site to a page in the WordPress installation.

When a separate WordPress installation is used within Joomla, the WordPress plugin ‘page-links-to’ allows you to create the exact menu you had in Joomla; even pointing the home page back to the Joomla home page. However, the templates are different. If computer generated software like Artisteer was used to make the Joomla and WordPress templates, templating could be rather fast; especially if they were not edited afterwards. If they are edited, both should be changed accordingly to make the match.

Now, you can blog in WordPress and link to this blog from Joomla for SEO purposes. All pages in the main menu will link to Joomla pages and all posts in the WordPress installation can be assigned to new categories.

If you have familiarity with WordPress, adding it to a Joomla installation could be rather painless. But, if you are new to WordPress, you must be prepared to learn a few things in order to manage the blog effectively.

The same approach to using a WordPress blog can be applied to other blogging platforms too; such as a Codeigniter blog application, or php/mySQL blogging software.

Using Joomla can be a smooth experience. However, there can be times when components or modules exhibit PHP errors. There are many reasons why such problems can occur. In order to find the source of such a problem, you may want to track recent file or server changes.

One problem which could pose problems is upgrading the Apache server. For example, you may want to add a php module like xmlrpc. However, the default upgrade settings in web host manager or Linux CentOS could upgrade the PHP from the current version to a much more recent version. After the upgrade is completed, some extensions and modules which were created in an older PHP version may not work properly with the new version since some functions and features could be deprecated. To solve the issue, you may want to create a new Apache upgrade with the previous version of PHP for which everything worked properly, or upgrade Joomla core, components and modules, if necessary. Unfortunately, some older plugins, modules and components will be more difficult to upgrade than others.

Joomla comes with a few editors. The default editor is TinyMCE. TinyMCE is a good editor, but, FCK and JCK may be more desirable since they are a little more user friendly with inserting images and linking. As far as hand-coding goes, they are all fairly equal.

Hand Coding In Joomla Editor

When working with a Joomla editor, it is not like working with pure html/css or pure php for that matter. The editors may throw in some tags, but, that is marginal. The key is to understand the editor’s strengths. The editor’s strengths are div, br, td, tr, and span tags. When editing images and text in the source code, these tags stay where they should and work properly. You can style, float images, use tables and work css as you want. Most problems with working with an editor are when you try to edit outside of the source code. In this case, deleting rows and editing text may not do exactly as you expect.

PHP/mySQL Scripts inside Joomla

With Joomla, there are many custom Joomla specific extensions that work fine upon installation and / or modification. In some cases, there are extensions which are bridges. The bridges allow a user to integrate a separate PHP/mySQL script(from another installation) to be used inside Joomla as a component. The bridge is a quick fix, but some need database updates, etc. An example of a bridge would be to use a current phpBB forum installation with Joomla and synchronize the members.

In other cases, php scripts can run inside Joomla by placing them individually or within folders inside the parent Joomla installation directory. If a folder is used, the index.php will show up if the url is If the databases do not need synchronization, this is the simple approach to adding scripts inside a Joomla installation. The next issue will be css styling. An example of this would be to use a WordPress blog inside a Joomla installation. If the blog was only used by the system administrator, it could use its own database or its database tables dumped into Joomla`s. It would not be a real issue, but the two installation would use different templates. The administrator would need to make them, match. Unlike WordPress, a php framework like Codeigniter could easily modified top use the existing template from Joomla(or any cms for that matter).

Other alternatives are to use a PHP framework inside Joomla, although practically any php/mysql script could be dumped inside the root folder and accessed with an external link from the main menu.

The procedure to use the PHP framework would be similar to using another php script. Frameworks offer so many advantages; such as simple integration, although some scripts in pure php/mysql would integrate faster and easier than converting them to Codeigniter.

A php framework can be used with or without a database. The php framework could simply run off the existing database, thus allowing for unlimited possibilities.

Other PHP / mySQL Scripts into Joomla

With Joomla, you can practically recode any php / mySQL script to be used as a Joomla extension. To do this, you must know how to create and package a Joomla extension as a module, component or plugin using Joomla classes. A rebellious way to say this is `To make a Joomla extension, you must do things with our code!`. Joomla has a system and it is fine to follow its rules for those previous specified extensions.

But, what if I want another alternative to add a php/mySQL script without so much rigidity? For example, I may want to use it for WordPress or Expression Engine and I don`t want to recode for the CMS each time? Then, moving the php/mySQL script into a php framework like Codeigniter or using a stand-alone php/mysql application is a valid solution; unless you want to make extensions available to others or for profit. By using this method, the application could be applied simply to other content management systems. Another positive aspect is speed and raw language coding. Converting a php/mySQL script to Codeigniter application can be done very quickly. The php/mySQL files will use MVC, but the database connectivity can be used within the view files. Basically, one or more controllers could be used to call the view files which will be slightly modified versions of the original php / mysql files.

There may come a day when you would want to use an Artisteer template.css file for other applications, or to know how the styling works. By default, Artisteer sets the main menu to the user3 position. Although you can change the main menu position name, let’s assume it is in user3. You can find some details about the main menu in the mytemplate/html/mod_mainmenu/default.php file; although it is not that important to do so.

With this example, it is assumed that you want to use the Joomla template with a Codeigniter component. Since the component uses Codeigniter classes and some raw php, we just wanted to plop it into Joomla without having to rewrite classes (such as connecting to the database, selecting from the database, making new controllers, views and models) which would take significantly longer than using something that has already been thoroughly tested and works as desired.

In the Codeigniter view file, you would simply paste in a menu in the desired position within the view file.

In order for the Codeigniter component to use the Joomla template, it must load the appropriate files within the head tags which are located in the view file.

In this particular case, the menu lies just above the content. The template for the Codeigniter component will look identical to that of the rest of the Joomla website which contains Joomla components. The code could resemble something like the code shown below:

<div class=”art-nav” >
<div class=”l” ></div>
<div class=”r” ></div>
            <ul class=”art-menu” >
            <li class=”item1″><a href=”http://localhost/mysandbox”><span class=”l”></span>
            <span class=”r”></span><span class=”t”>Page 1</span></a></li>
            <li> <span class=”art-menu-separator”></span></li>
            <li class=”item2″><a href=”http://localhost/mysandbox”><span class=”l”></span>
            <span class=”r”></span><span class=”t”>Page 2</span></a></li>
            <li> <span class=”art-menu-separator”></span></li>
            <li class=”item2″><a href=”http://localhost/mysandbox/codeigniter/index.php/ciexample_test”><span class=”l”></span>
            <span class=”r”></span><span class=”t”>Page 3</span></a></li>
            <li> <span class=”art-menu-separator”></span></li></ul>       
            <div class=”art-contentLayout”>

Speeding Up Joomla

Joomla does a pretty good job at presenting web pages at a decent speed. I find it unfair when I read articles about why to use this CMS rather than Joomla, or other such negative commentaries regarding the speed of Joomla. To keep the arguement very short, Joomla can run quite fast when the proper environment is used regarding its operation. Personally, I have found 3 variables to be the key factors in determining Joomla loading speed.

  • Hosting
  • Template
  • Components / Modules

As a normal part of the learning curve, shared hosting may be the plan for which a web site is hosted. In this case, shared resources can really affect performance. VPS or dedicated servers will allow you to have control and to monitor which processes eat up the CPU. Operating a VPS or dedicated server is more responsibility and requires knowledge regarding how to maintaining a Linux server, but well worth it if there comes a time when optimizing your server for performance is a top priority.

Templates can be hand-crafted, purchased, or made with software. Hand-crafted templates will give the best performance….period. For example, I built a template with Artisteer, then, made the same hand-crafted design and the YSlow rating was 76% for Artisteer and 95% for the hand-crafted version. Hand-crafted templates can have many less lines of css and less images. When a custom template is used, the web developer needs to know where and how all modules, text, components and images will be positioned during template construction.

Component and module usage will affect performance. In extreme cases, like Joomla statistics, large database queries can really slow a site down.

Joomla sites can rank quite high in terms of speed if the web developer makes adequate files and uses an adequate server.

This is a simple way to change an addon domain user password in cpanel. 1) Login into cpanel 2) Click FTP Accounts or Find FTP accounts or FTP Manager 3) You will see a page with a list of your addon domains with that particular account. 4) You can change your user password from change password option there. 5) Make a new site with FTP 6) The website will be 7) The username will be
For example, a website called hosted in the master account would have a username 8)Now, the client could login from any FTP software with those authoritative credentials.

Joomla has a wide variety of extensions available for tagging articles and having tag lists on any page. Joomla Tags is one such extension. The extension could need lots of extra configuring to get it working as desired. Personally, it has a consumed a couple hours on my end to get it functioning how I wanted it to work on a particular website. One issue that must be dealt with is that the tags seem to only work properly with all articles that belong to a category and section. Uncategorized articles do not tag; at least not very easily.

The Kunena plugin works quite well with jomsocial. However, there are a few items for which to take note in order to make the most of it; such as new posts and deleting entries from jomsocial recent activities. For one, a new entry will be published in recent activities on the original save. The only way that I can see to update the entry is to copy the finished entry from the Fireboard or Kunena table named fb_messages_text and move it into the appropriate entry within the communities_activities table which is part of jomsocial. If images are used, they should be transparent unless the forum and jomsocial activities have the same background.

Writing directly to the database via phpmyadmin or using the mysql prompt can also save quite a lot of time creating entries rather than using a clunky backend administrator zone.

Finally, if you happened to leave the forum open for public access, you will notice these entries will show up in the Activities in JomSocial as well. Chances are that if you allow public access, someone will do ‘greasy kidstuff’ like write bogus links and text. Or, some spammers from eastern europe could create a bunch of annoying links. Either way, if the spam gets out of hand, the fb_messages table will leave an ip address of the spammer so that it that can be added to a list of banned ips.

To access any email account in cpanel,

1) Go to the address below with proper configured port number.

2) Enter username and password

3) Enter email and password.

Here are the new usernames and passwords:

Email: or Password: poiu1290

For speed and performance, gzip is an obvious choice for compression with websites using cpanel. In some cases, like reseller packages, this may be enabled when you buy a hosting plan. In other cases, it may have to be enabled.

To enable GZIP,

  1. Open up WHM with your VPS or dedicated server
  2. Look for Software
  3. Select EasyApache
  4. Start Customizing Based on profile
  5. Select Next Step
  6. Select Exhaustive List
  7. Select Deflate
  8. Select Save and Build
  9. Go to Cpanel
  10. Select Optimize Website
  11. Enable GZIP
  12. Now, all websites in the Cpanel account will have gzip compression.


Joomla templates can made with commercial software, hand coded, downloaded for free, or purchased. Purchasing a template can save a lot of time if the template does not need much tweaking. Although software exists to make template rather quickly, the result is often quite bloated. If the template will not need much editing in the future, then this may be a way to go if you are prepared to spend the $200 for such software. However, if you want to change the template later, there could be thousands of lines of code in the css file which can make this a chore. In this case, knowing CSS is a must. See our free Joomla templates.

Joomla has a large forum for members to ask questions about the Joomla CMS. Since we are part of the Joomla community and have created several Joomla extensions, our members can partake ion our forum to ask questions regarding how to use our extensions. See our Joomla Extensions Forum.

Joomla 1.5 Extensions

Joomla 1.5 extensions are custom programs that can be installed into the Joomla CMS. The custom programs are written in PHP, HTML, CSS and perhaps Javascript. These programs can be anything from popups to automated shopping carts. We have several extensions that are available to download for free.

In some cases, some extensions work perfect right from the box, while others need to be modified significantly so that it looks and works like you want it to. Although this sounds convenient, web developer should look over the code and make sure it is very secure and protected from potential SQL injections, etc.

The simplest Joomla module contains 3 files.
1. XML manifest file 2. PHP file (main controller file) 3. 1 Dummy HTML file

XML File
The XML manifest file contains the parameters and installation instructions for the module. This file must have the same name as the folder which contains all module files; such as mod_popper.

This file is just a line of code to make sure others cannot see files within this directory, but it does function with the module itself.

PHP File
The PHP file is the controller file like it was designated in the parameters in the XML file. This file could be something like a self-checking form or another program. Alternatively,
More instructions can be found here:
Build a Simple Module

Alternatively, all modules (except custom modules made in Administrator) show their files in the modules folder. If you had more than one template, a filelist could be made in the XML manifest file.

If the module is to have a list of templates or a template path, this code would be added to the php file:
The folder would be called tmpl and would have the default.php file and images for the template. These file names would be added to the xml file.

Joomla has a decent contact that form that comes with the CMS. But, you may want to upgrade one day as you may find the odd piece of junk email gets sent for which the user effortlessly fills it out with a couple of letters in each text box and sends it. The built in form can be upgraded with a plugin and component like tinCaptcha. The captcha ensures that the person is real. However, unless you have some competency in editing source files, you will find it difficult and time consuming to add new form fields. Therefore, wouldn’t it be great if you could just add custom forms with normal HTML/CSS, Javascript and PHP syntax? Well, that solution is very feasible with a plugin like sourcerer. Sourcer allows you to write Javascript, HTML/CSS and PHP just the way you want it. WordPress and Drupal have similar plugins and modules for writing similar code. Back to Joomla and Sourcerer. To make a custom form, you can create a new article and use whatever code you want to use between the sourcerer tags [source][/source]. Then, the form will be validated using the POST method using a content article with a specific id. The content article will use sourcerer tags to contain the php code which is used to validate the form. The code call the php file which validate the code may look like:
form action=”index.php?option=com_content&view=article&id=206&<?php echo date(‘l jS \of F Y h:i:s A’);?>” method=”POST”

However, if you made the form in an article using Sourcerer tags, the page would be cached. Therefore, if you would use this if page caching is ‘off’ or something very low like 1 minute. If the cache was set to 1 minute, only the first email in the next 60 seconds will be received and the next email after 60 seconds would be received.

Now, although this works fine, there in another rather simple option to use. That option is to make a custom module (they are not cached unless specified to do so). You can make a Joomla module here.

Now, you know how to use forms within Joomla reusing code from your repository. If you want to add Javascript, you can also do so in the article, if the Sourcerer plugin is set to accept Javascript in Articles (normally, it is by default). You can make sure the user fills out the form properly with error checking like “Please make sure your email address uses @” or “Please make sure your phone number is exactly 10 digits with or without hyphens”. Validation like this will almost certainly stop all people who get a kick out of annoying people with useless requests. Even if the person goes through the trouble at this point to send a bogus email, your simple deletion is 1/10 the time it would take to fill out the form properly. If the thank you message contained the user’s IP address that could help deter future harrassment. Finally, the contact page could always contain a little php to deny the ip addresses you don’t want to receive mail from and redirect them elsewhere.

Joomla has a number of various editors which can be used to create content for pages and modules. However, in most cases, they can arrange text, images and Flash to look precise. However, the editors are not the best choice for precise custom coding. For custom coding, an the extension Jumi can be used to create custom content in modules and articles.

With Jumi, custom content can be done with the various common coding scripts and languages; XHTML, CSS, PHP, CGIs and Javascript. With Jumi, you can take a page designed in a Photoshop PSD file and convert it to XHTML / CSS. Then, these files can be inserted into a directory. With the Joomla article manager, a new page can be made with Jumi for which will contain these files. When making the appropriate file with Photoshop, it should be sized properly to fit inside the page.

This matter about using custom coding is often discussed in many forums regarding Joomla vs Drupal. But, both can be used to add custom precise coding to any content page with proper coding and tagging. As far as ease goes, the timeframe to work with Jumi and custom tags from the login would be almost equal, and definitely within seconds. With Drupal you just add the php whereas with Jumi you upload a php file and write a tag so that it will run on the desired page.

You can read blogs, documentation and stats about the competing frameworks to determine which technologies to use, or, you can see what others are actually using.

The following images compare ASP,, PHP and Joomla. These three comparisons show that although there is a decrease in PHP (which is what Joomla and Drupal are written with) there is an overall upward trend with Joomla compared to others which look as though they are slowly decreasing. Although not shown, Drupal and WordPress also show an increase to their usage against These results are as of July 26/09 from Google Trends. We have all learned to use and trust Google, so are these stats about as accurate as we can get?

 Although it looks like PHP is on the decrease, the question would be why, when the big 3; Joomla, WordPress and Drupal are on the rise. Could that be an obsolescence in other PHP scripts that had once been popular?






All images are from Google trends

Joomla vs WordPress

Joomla and WordPress are two php scripts that compete almost neck and neck. Below, are some stats to compare the usage of Joomla and WordPress in the world, Canada and US.






United States


 All images are from Google Trends

Joomla vs Drupal

The debate whether or not to use Joomla or Drupal goes on and on. However, popularity stats do speak for themselves. Here are a few examples of statistics from the world, Canada and the US.




United States 

All images above are statistics from Google Trends  

A picture can be worth a thousand words. But, the words can be all over the map. Since Drupal and Joomla do practically the same thing, it can be a matter of preference. Joomla should be more easier to use and update; unless all updates are through the front end for which both cms would easy to manage. Joomla 1.6 and Drupal both have good user management and Joomla has various 3rd party plugins available for earlier versions. Drupal gets the edge in performance, with all things equal. But, skilled optimization and an optimized web server take care of such issues. I’ve seen optimized Joomla websites with Jquery slideshows and video plugins rank 95% with Yslow. While the Joomla vs Drupal debate focusses on the basics, it often never gets to the nitty gritty for how to make the most of what you got. Codeigniter integrates very simply into Joomla and can be used for very fast performance; although slightly more work.

One negative drawback about Drupal for some ‘low balling’ web design projects is that it has a disadvantage in the module department. Joomla has so many and it can help a seasoned developer build a website very quickly. For larger websites where speed is an issue, Drupal could be a good choice. Often, many Drupal users like to condone Joomla with regards to speed, code, etc. But, Joomla does do a good job in the proper environment if the server, template and code is optimized for speed. Codeignter and pure php/mysql is faster than Drupal, but, not many Drupal folk discuss this.

In the end, both are great pieces of work.

Joomla 1.5 was released on January 2008 and it has been used to build millions of sites. Now, it is at version 1.512 and still going strong. Joomla can be downloaded at and installed on the hosted domain or a local Wamp or Xamp server. Wamp is a good tool to use for testing Joomla sites offline before they go live.

Joomla can be seen as the Windows of Content Management Systems. Other CMS may have positives like better administration control over content, but, Joomla has so many components, modules and plugins that can be installed which can do practically anything a user wants. All plugins components and modules are written in PHP. In some cases they can be installed and used immediately. In other cases, proper parameters need top be setup. Yet in other cases, they will need complete makeovers in the CSS and PHP files. Furthermore, just how PHP is setup on the server can have an impact on how the site displays information. At some point, a web builder will need adequate knowledge of PHP and MYSQL in order to make forward progress with the majority of Joomla components, plugins and modules. Still, for the client he wins because the CMS can be setup and delivered rather affordably, and his ability to edit text and image content will cut all future costs and allow for a more up to date website at all times. 

So many websites are built with Joomla 1.0 and Joomla 1.5 because the client can login and make changes on his computer. The changes can be text or graphics. 

With the Global economy, so many Joomla extensions are being produced in countries the american dollar is very strong. This allows for an instant purchase for an affordable extension that can often be downloaded within minutes of purchase. And, as you read this, more and more competition is popping up and new versions and templates are being tweaked to keep web 2.0 very fresh indeed. It may be heartbreaking for some people to see such advanced coding being sold in Malaysia for $150 when it would take a hefty salary for an efficient PHP programmer with solid CSS skills to create the same software at home. This is just the way it is. Web development is becoming more plug and play. Joomla is a spelling change from the derived word ‘Jumla’ which means ‘all together’. The future, at this point, only looks easier for the plug and play web developer since the methods of plug and play are so cost effective and a quick solution to often complex problems. 

Some of the more high end Joomla sites are and 

For websites that just use text and graphics, familiarity will be the key. Drupal and WordPress load very fast with websites that display text and graphics.