<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>itoctopus</title>
	<atom:link href="http://www.itoctopus.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.itoctopus.com</link>
	<description></description>
	<lastBuildDate>Wed, 16 May 2012 17:01:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Is Your Joomla Domain Blacklisted?</title>
		<link>http://www.itoctopus.com/is-your-joomla-domain-blacklisted</link>
		<comments>http://www.itoctopus.com/is-your-joomla-domain-blacklisted#comments</comments>
		<pubDate>Wed, 16 May 2012 16:47:20 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1994</guid>
		<description><![CDATA[This post discusses the issue of domain blacklisting when it comes to email.
We&#8217;ve all been there: we send an email to one of our clients, we don&#8217;t get a response. We re-send the email, and we still don&#8217;t get a response. The same happens when sending an email to another client. At one point, we [...]]]></description>
			<content:encoded><![CDATA[<p><em>This post discusses the issue of domain blacklisting when it comes to email.</em></p>
<p>We&#8217;ve all been there: we send an email to one of our clients, we don&#8217;t get a response. We re-send the email, and we still don&#8217;t get a response. The same happens when sending an email to another client. At one point, we start thinking that our whole business is in peril, and nobody is interested in our products and/or services anymore.</p>
<p>But, all of a sudden, we receive a bounced email containing the following message: </p>
<p><em>Your access to this mail system has been rejected due to the sending MTA&#8217;s poor reputation</em></p>
<p>At first, we don&#8217;t pay attention, but soon we start receiving several of these emails, and then it strikes us: &#8220;Our clients were not receiving our emails because our domain was blacklisted&#8221;.</p>
<p>Now, before discussing how that happened and how to fix the problem, let&#8217;s dissect the above message:</p>
<ul>
<li><em>Your access to this mail system is rejected</em>: Your mail server (for example <em>mail.yourjoomlawebsite.com</em>) was not able to &#8220;shake hands&#8221; with the mail server you&#8217;re trying to send the email to. It&#8217;s the same as meeting someone, and trying to shake hands with him, but instead of him shaking hands with you, he looks at your hand and shrugs.</p>
</li>
<li>
<p><em>&#8230;due to the MTA&#8217;s poor reputation</em>: Now, why did the other server refuse to shake hands with your mail server? It&#8217;s because your Mail Transfer Agent (MTA &#8211; same as Mail Server), has a poor reputation.</li>
</ul>
<p>Now that we dissected the message, <strong>why does your MTA have a poor reputation?</strong></p>
<p>It could be a number of reasons:</p>
<ul>
<li><strong>You are using your mail server to send unsolicited mass emails</strong>: Even if you have good intentions, mass emails are considered spam by most servers. If a mail server notices that you are sending separate emails to many of its users at the same time, it&#8217;ll flag your mail server and the administrator of that mail server will report your mail server to be included on a blacklist. Advanced mail servers will do the reporting automatically, without the interference of a mail server administrator.
</li>
<li>
<p><strong>Your website security is compromised and a hacker is sending spam emails from your mail server</strong>: This happens quite often for Joomla websites &#8211; someone hacks into your Joomla website (if it&#8217;s not secure enough) and starts sending spam emails from a script installed on your website. Your server will be usually blacklisted in no time.</p>
</li>
<li>
<p><strong>You website is on a shared hosting</strong>: Let&#8217;s consider the below scenario&#8230;</p>
<ul>
<li>Your website is hosted along with 50 other websites on the same server (sometimes, the number of websites hosted on the same server can be in the hundreds).
</li>
<li>
<p>All these websites use the same mail server. Although your website might be using <em>mail.yourjoomlawebsite.com</em> (which is unique to you) for outgoing SMTP, your mail server is technically the same as that of all the other websites hosted with you on the same server, as it has the same IP. (Quick and important note here: <u>Mail servers are blacklisted by IP</u>)
</li>
<li>
<p>Another user on the same server is abusing the mail server either willingly or unwillingly, by sending spam emails or by hosting an insecure website allowing spammers to exploit vulnerabilities on his website in order to use it to spam people.</p>
</li>
<li>
<p>The above user&#8217;s mail server is blacklisted, which means that your mail server is blacklisted as well, as they are the same. (Again, mail server blacklisting is by IP)</li>
</ul>
</li>
</ul>
<p><strong>How to make sure that your Joomla domain is blacklisted?</strong></p>
<p>First, you need to know what is the IP address of your mail server. You can know it usually by pinging <em>mail.yourjoomlawebsite.com</em>. Once you have that IP, you then go to this website: <em>http://www.mxtoolbox.com/blacklists.aspx</em>, and you enter your IP under <em>Server IP</em>, and then click <em>Blacklist Check</em>. If you see a message (in red) that says <em>We notice you are on a blacklist.</em>, then you are definitely on a blacklist.</p>
<p><strong>What to do when your Joomla domain is blacklisted?</strong></p>
<p>The first and only thing that you need to do is to contact your hosting company and tell them about the issue. Ensuring that your mail server is not on a blacklist is their responsibility &#8211; not yours! What they will do is that they&#8217;ll cleanup the server and then contact the different blacklisting services and ask them to remove the IP of your mail server off their list. If the blacklisting happened because of your website (either because you&#8217;re sending unsolicited emails or your website is hacked by a spammer), then your hosting company might warn you about this and might ask you to 1) stop sending unsolicited mass emails and 2) ensure that your Joomla website is secure enough (unlike popular belief, the security of your own website is rarely your hosting company&#8217;s responsibility). (If your website is on shared hosting, then we recommend you check this post on <a href="http://www.itoctopus.com/what-is-joomlas-ideal-hosting-environment" title="What Is Joomla's Ideal Hosting Environment?">Joomla&#8217;s ideal hosting environment</a>)</p>
<p>If your Joomla website is blacklisted and you need help to remove it from the blacklist and to secure it then look no further &#8211; we are here to help! Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and rest assured that we will fix the problem and make your website <em>ultra</em> secure in no time. By the way, you don&#8217;t need to worry about <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">our fees</a> &#8211; they are very reasonable. Oh, and we are extremely friendly!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/is-your-joomla-domain-blacklisted/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Get the Number of Facebook Likes on a Joomla Website?</title>
		<link>http://www.itoctopus.com/how-to-get-the-number-of-facebook-likes-on-a-joomla-website</link>
		<comments>http://www.itoctopus.com/how-to-get-the-number-of-facebook-likes-on-a-joomla-website#comments</comments>
		<pubDate>Sat, 12 May 2012 19:27:53 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1966</guid>
		<description><![CDATA[We were asked to do a very challenging task by one of our clients: He wanted to get the number of Facebook &#8220;likes&#8221; his website has on every page. Of course, this can be determined by simply placing a Facebook &#8220;Like&#8221; button on every page (using a simple content plugin), but our client wanted to [...]]]></description>
			<content:encoded><![CDATA[<p>We were asked to do a very challenging task by one of our clients: He wanted to get the number of Facebook &#8220;likes&#8221; his website has on every page. Of course, this can be determined by simply placing a Facebook &#8220;Like&#8221; button on every page (using a simple content plugin), but our client wanted to have a module on his website containing the top 10 &#8220;liked&#8221; pages on Facebook, so this meant that we needed to get that information programmatically. That job was challenging because we&#8217;ve never done it. However, we were confident that we were able to do it.</p>
<p>So, to satisfy our client&#8217;s requirements we needed to:</p>
<ol>
<li>Get the number of Facebook likes he has on each and every page of his Joomla website.</li>
<li>Store the above information in the Joomla database.</li>
<li>Create a module that will list the &#8220;Top 10 Liked Pages on Facebook&#8221;.</li>
<li>Display the above module on every page.</li>
</ol>
<p>We will only examine the first step (as the other steps are trivial considering the complexity of the first step) and we will explain, in details, how it can be done.</p>
<p>First thing that you need to know (it took us some time to discover it) is that Facebook has an external interface that allows anyone to get the number of Facebook likes for any page, for example, here&#8217;s the one for Google:</p>
<p><em>
<pre>http://api.facebook.com/method/fql.query?query=select%20like_count%20from%20link_stat%20where%20url=%27http://www.google.com%27</pre>
<p></em> Copy the above link into your browser&#8217;s address bar and you&#8217;ll see something like the following:</p>
<p><code>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;fql_query_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" list="true"&gt;
	&lt;link_stat&gt;
		&lt;like_count&gt;796902&lt;/like_count&gt;
	&lt;/link_stat&gt;
&lt;/fql_query_response&gt;</pre>
<p></code></p>
<p>As you can see from the above, the URL returns an XML response containing the number of likes that the page <em>www.google.com</em> received. At the time of writing this post, <em>www.google.com</em> had 796,902 likes (that number is very low considering the amount of traffic Google has, but it might be because Google doesn&#8217;t have a Facebook Like button on its homepage &#8211; we are confident that the number is accurate because we did many tests with many other websites and all the tests returned accurate results).</p>
<p>Now, let&#8217;s try to do the same with <em>www.facebook.com</em>. Copy the below URL into your address bar:</p>
<p><em>
<pre>http://api.facebook.com/method/fql.query?query=select%20like_count%20from%20link_stat%20where%20url=%27http//www.facebook.com%27</pre>
<p></em></p>
<p>&#8230;and you will get the below XML response:</p>
<p><code>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;fql_query_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" list="true"&gt;
	&lt;link_stat&gt;
		&lt;like_count&gt;2292310&lt;/like_count&gt;
	&lt;/link_stat&gt;
&lt;/fql_query_response&gt;</pre>
<p></code></p>
<p>We know from the above that <em>www.facebook.com</em> has 2,292,310 likes. Now, pay attention that this number doesn&#8217;t mean that the total likes for all the pages on Facebook is just over 2 million, it means that the homepage, and just the homepage, has this amount of likes.</p>
<p>By now you&#8217;ve probably guessed it, in order to the number of likes of a certain page, you only have to call the following URL from the code and parse its XML response:</p>
<p><em>
<pre>http://api.facebook.com/method/fql.query?query=select%20like_count%20from%20link_stat%20where%20url=%27{page-url}%27</pre>
<p></em></p>
<p>Where <em>{page-url}</em> can be any page on your website!</p>
<p>So, in order to gather the number of Facebook Likes for every page on our customer&#8217;s Joomla website, we created a system plugin, called &#8220;Count Facebook Likes&#8221;, and we made sure that the plugin ran on every page. That plugin did the following:</p>
<ul>
<li>Invoked the above API with the current page using curl. Here&#8217;s the code to do so:
<p><code>
<pre>$current_page_url =  "http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
$fb_count_like_url = "http://api.facebook.com/method/fql.query?query=select%20like_count%20from%20link_stat%20where%20url=%27".$fb_count_like_url."%27";
$fb_count_like_call = curl_init($fb_count_like_url);
curl_setopt($fb_count_like_call,CURLOPT_RETURNTRANSFER,true);
$fb_count_like_response = curl_exec($fb_count_like_call);</pre>
<p></code></p>
</li>
<li>
<p>Got the number of Facebook likes for the current page by parsing the XML response from the previous step. (The XML response is stored in <em>$fb_count_like_response</em>)</p>
</li>
<li>
<p>Stored the number of Facebook likes and the page information in a table called <em>jos_facebook_page_count_likes</em> in the Joomla database.</li>
</ul>
<p>Now that we have all this information stored, we were able to get the top <em>10</em> liked pages by issuing the following SQL query:</p>
<p><code>
<pre>SELECT * FROM `jos_facebook_page_count_likes` ORDER BY number_of_facebook_likes DESC LIMIT 0, 10;</pre>
<p></code></p>
<p>The above query was used in the module to list all the pages (of course, you might need to modify the above query to ensure that the pages returned are still published on your website).</p>
<p>If you want to develop a similar functionality on your website but think that it&#8217;s a bit complicated then just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and you can rest assured that we&#8217;ll do it for you in no time. <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">Our fees</a> are affordable and we are fast, efficient, and very friendly.</p>
<p><em>Note: We have noticed that the number of likes on Facebook expires. So, if someone liked a page on your website a year ago or so, his like won&#8217;t be counted in the end result.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-get-the-number-of-facebook-likes-on-a-joomla-website/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Revert Back to a Previous Version of Joomla?</title>
		<link>http://www.itoctopus.com/how-to-revert-back-to-a-previous-version-of-joomla</link>
		<comments>http://www.itoctopus.com/how-to-revert-back-to-a-previous-version-of-joomla#comments</comments>
		<pubDate>Tue, 08 May 2012 18:43:09 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1941</guid>
		<description><![CDATA[Sometimes you decide to upgrade your version of Joomla, and then after the upgrade is done, your website becomes completely unusable or some of its features become broken. Why does that happen, and how to revert back to a previous version of Joomla to undo the upgrade.
Why a Joomla upgrade might break your website
There are [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you decide to upgrade your version of Joomla, and then after the upgrade is done, your website becomes completely unusable or some of its features become broken. Why does that happen, and how to revert back to a previous version of Joomla to <em>undo</em> the upgrade.</p>
<p><strong>Why a Joomla upgrade might break your website</strong></p>
<p>There are several reasons that are behind this, and they mainly are:</p>
<ul>
<li><strong>You have modified the core of your Joomla website</strong>: Many website owners modify the core of their Joomla website (or have it modified) in order to add some custom functionality. While this can be necessary, it should be avoided when possible. Only modify the core of your Joomla website when there is no other alternative. Note that in most cases there is an alternative! 99% of the very complicated work that we get on Joomla can be done using extensions. We rarely find a need to modify the core. And, in the very rare cases where we do, we try our best to make our changes compatible with future upgrades.
</li>
<li>
<p><strong>You have installed an extension that is not compatible with your current version of Joomla</strong>: When you do an upgrade, sometimes a 3<sup>rd</sup> party extensions can be incompatible with your current version of Joomla, and if this extension is a System plugin that runs on every page, then most likely your page will either show a <a href="http://www.itoctopus.com/blank-page-on-joomla-login" title="Blank page o Joomla login">blank page</a> or will display a fatal error (at best your page will display a warning).</p>
</li>
<li>
<p><strong>You have uploaded the files to the wrong place</strong>: A Joomla upgrade usually consists of uploading specific files to specific directories. Sometimes the upgrade can consist of just uploading a couple of files to a couple of directory. What if, for example, you need (as part of the upgrade) to upload <em>index.php</em> to the <em>administrator</em> directory, and instead of uploading that file to the administrator directory, you uploaded it to the root directory of your website. Not a single page on your website will work (the <em>index.php</em> file that is located directly in the root directory of your website is used on every page on the frontend of your Joomla website).</p>
</li>
<li>
<p><strong>You haven&#8217;t finished uploading the files, but you thought you did</strong>: As stated above, a Joomla upgrade consists of uploading several files. What if the upgrade consisted of uploading 5 files and you uploaded only 4, and what if the file that you missed is used by those other files? At worst, all of your website will stop working and at best, some of your functionality on your website will be broken.</li>
</ul>
<p><strong>How to revert back to a previous version of Joomla</strong></p>
<p>Once you notice that the upgrade has broken your website, you slap your forehead with your right hand (or left hand, if you&#8217;re left handed or ambidextrous), and you whisper &#8220;What have I done?&#8221;. You start panicking and the first thing on your mind usually is &#8220;how can I revert this upgrade?&#8221;. Well, the easiest way to revert back to a previous version of Joomla is to just go back to a previous filesystem backup. But even that can be tricky, especially if the upgrade has modified both your file system and your database. So, if you do have backups, then it&#8217;s always better, when reverting to a previous filesystem backup, to revert back to a database backup that was generated the same day the filesystem backup (that you&#8217;re using) was generated.</p>
<p>But, what if you don&#8217;t have any backups?</p>
<p>This is when this can quickly become very challenging. When you uploaded the files, you have erased the previous versions of the files. So, the first thing that you should do is the download the previous Joomla version (the one that you had before the upgrade), and then replace the files that you have already uploaded with the files from this (previous) Joomla version. Once you do that, two things might happen:</p>
<ol>
<li>Your website will return to its previous working state. (congratulations)
</li>
<li>
<p>Your website will show different errors. In this case, it&#8217;s because the database was updated using that upgrade. You will need to contact <a href="http://www.itoctopus.com/the-joomla-experts" title="Joomla Experts">Joomla experts</a> at this point because it&#8217;ll be really hard to fix these errors without a backup (and you will need programming and MySQL skills to fix them).</li>
</ol>
<p>So far, we have talked about reverting back to a previous version of Joomla if it&#8217;s an upgrade, but what it&#8217;s a migration? In this case, there is no other way but to revert to a previous backup (a migration is a destructive process as it consists of recreating the site from scratch), and if you don&#8217;t have any previous backup, you will need to contact a Joomla company, such as itoctopus, in order to revert your Joomla website back to an earlier date. We, at itoctopus, are very experienced in Joomla and we are also extremely nice people to work with. Just <a href="http://www.itoctopus.com/contact-us" title="Contact us">contact us</a> and we&#8217;ll take it from there (don&#8217;t worry about <a href="http://www.itoctopus.com/fees" title="Our fees">our fees</a> &#8211; they are really, really reasonable).</p>
<p><strong>Addendum: Some best practices when upgrading your Joomla website or migrating your Joomla website to another version</strong></p>
<p>Here are some best practices when upgrading or migrating to another Joomla version:</p>
<ul>
<li>Backup your database and your filesystem just before doing the upgrade or the migration.
</li>
<li>
<p>Create a copy of your database (using <em>phpMyAdmin</em>) and create a copy of your actual website under an <em>previous</em> directory (so, in other words, you should upload all the files for your website to that <em>previous</em> directory, which should be located directly under the root directory). Change the <em>configuration.php</em> file in your directory to point to the copy of the database (not the original database).</p>
</li>
<li>Avoid using Akeeba backup. Akeeba backup is one extension that you will only know it&#8217;s useless when it&#8217;s too late. This is because in order for Akeeba Backup to work, your website must be functional (which defies the whole point). In many cases, people revert back to previous versions of their websites when their websites no longer work.
</li>
<li>
<p>If you have problems with your upgrade/migration, then reverting back simply consists of doing a simple redirect in your <em>.htaccess</em> file to <em>yourjoomlawebsite.com/previous</em>, and that&#8217;s it! So, in case you have problems, you need to add the following lines to your .htaccess file:</p>
<p><code>rewritecond %{http_host} ^yourjoomlawebsite.com [nc]<br />
rewriterule ^(.*)$ http://www.yourjoomlawebsite.com/previous/$1 [r=307,nc]</code></p>
<p>Once you add the above lines to your <em>.htaccess</em> file, upload it to your website, and your website will now work!</p>
</li>
<li>
<p>Although the website is working, it&#8217;s working out of the <em>previous</em> directory. We want to make it work out of the root directory, so here&#8217;s why you need to do:</p>
<ul>
<li>Delete the original database, and then re-create the original database from the backup.</li>
<li>Delete all the directories in your website&#8217;s filesystem (with the exception of the <em>previous</em> directory, of course), and then re-upload them from the backup.</li>
<li>Roll back the changes you did on the <em>.htaccess</em> file and then upload it back.</li>
<li>Your website should now work!</li>
<li>Delete the <em>previous</em> directory, you don&#8217;t need it anymore.</li>
<li>That&#8217;s it!</li>
</ul>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-revert-back-to-a-previous-version-of-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Disable JavaScript IE Warnings/Errors for a Joomla Website?</title>
		<link>http://www.itoctopus.com/how-to-disable-javascript-ie-warnings-errors-for-a-joomla-website</link>
		<comments>http://www.itoctopus.com/how-to-disable-javascript-ie-warnings-errors-for-a-joomla-website#comments</comments>
		<pubDate>Mon, 30 Apr 2012 15:20:50 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1151</guid>
		<description><![CDATA[Your Joomla website works perfectly on Firefox and Chrome &#8211; yet, for some reason, your website has at least one JavaScript warning on IE, which makes your website sound as if it&#8217;s unprofessional and/or insecure. This will most likely lower your conversions on your website.
The reason of having a JavaScript error on Internet Explorer, and [...]]]></description>
			<content:encoded><![CDATA[<p>Your Joomla website works perfectly on Firefox and Chrome &#8211; yet, for some reason, your website has at least one JavaScript warning on IE, which makes your website sound as if it&#8217;s unprofessional and/or insecure. This will most likely lower your conversions on your website.</p>
<p>The reason of having a JavaScript error on Internet Explorer, and not on the others browsers (such as Firefox or Chrome), is because IE often violates some JavaScript standards and does not respect some general (but not formal) guidelines in its JavaScript parser. So, a code that is 100% JavaScript compliant might not work on IE, and a JS code that works on other browsers may also not work on IE. In many cases, that JavaScript code causing the problem is not important to run or is irrelevant in an IE browser. So, what can the person do, besides fixing the actual JS code (which tends to be very complicated especially if the person is not a programmer), to suppress the warnings on IE?</p>
<p>Surprisingly, doing so is a very simple task, all you need to do is to add the following code to your <em>index.php</em> file, which is located under the root directory of your Joomla website:</p>
<p><code>
<pre>
&lt;script language="JavaScript"&gt;
	function supressError(){
		return true;
	}
	window.onerror = return supressError();
&lt;/script&gt;</pre>
<p></code></p>
<p>As you can see, it&#8217;s a very simple process, and it can save you hours and hours of work to solve an annoying and unimportant JavaScript problem.</p>
<p>In case you need any help doing the above, then just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>. We&#8217;ll do it for you at a lighting speed and we&#8217;ll charge you a <a href="http://www.itoctopus.com/fees" title="Our reasonable fees">very reasonable fee</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-disable-javascript-ie-warnings-errors-for-a-joomla-website/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Could Not Find an XML Setup File in the Package Error When Installing a Joomla Extension</title>
		<link>http://www.itoctopus.com/could-not-find-an-xml-setup-file-in-the-package-error-when-installing-a-joomla-extension</link>
		<comments>http://www.itoctopus.com/could-not-find-an-xml-setup-file-in-the-package-error-when-installing-a-joomla-extension#comments</comments>
		<pubDate>Sat, 28 Apr 2012 18:17:49 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1776</guid>
		<description><![CDATA[If you haven&#8217;t seen the error &#8220;Could Not Find an XML Setup File in the Package&#8221; when working on your Joomla website then most likely you have only used the basic features of Joomla (which means that you have not taken advantage of Joomla&#8217;s extensive extensions&#8217; library), this is because this error exclusively shows up [...]]]></description>
			<content:encoded><![CDATA[<p>If you haven&#8217;t seen the error &#8220;Could Not Find an XML Setup File in the Package&#8221; when working on your Joomla website then most likely you have only used the basic features of Joomla (which means that you have not taken advantage of Joomla&#8217;s extensive extensions&#8217; library), this is because this error exclusively shows up when you are trying to install an extension (a plugin, a module, a component) or a template.</p>
<p><strong>Why does this error happen?</strong></p>
<p>The installation file of any extension or a template (by the way, technically a template is also an extension, but we&#8217;re counting it again to avoid confusion) is a zip file that contains an XML <em>setup</em> file. That XML file defines the structure or the <em>skeleton</em> of the extension: it will tell Joomla what the extension does, which files should be installed with this extension, what are the settings of the extension, and for which Joomla version is the extension written. The name of the XML file must match the name of the zip file/extension (without the <em>.xml</em> part of course). If the XML file does not exist, then you will get the famous (and sometimes dreaded) &#8220;Could Not Find an XML Setup File in the Package&#8221; error.</p>
<p><strong>How does this error happen?</strong></p>
<p>There are several reasons for this error to happen:</p>
<ul>
<li>You are uploading a corrupted extension. To solve this problem you need to either find a non-corrupted version of that extension or use a similar extension instead.
</li>
<li>
<p>The name of the XML setup file does not match the name of the zip file/extension. To solve this problem you need to extract the extension, rename the XML file, re-zip the files, and then try to upload the extension again.</p>
</li>
<li>
<p>You are uploading a zip file that consists of several extensions, and these extensions should be uploaded individually (most common case). To solve this problem extract the main zip file and then try to upload the extracted zip files individually. (for example, <em>main.zip</em> will be extracted to <em>extension1.zip</em>, <em>extension2.zip</em>, <em>extension3.zip</em>, etc&#8230;)</p>
</li>
<li>
<p>The structure of the zip file you are uploading is wrong. For example, the zip file may contain a directory and then the extension files, which is wrong, as the zip file should contain the extension files directly without them being encapsulated in a directory. To solve this problem extract the zip file and zip the extension files directly, without first putting them in a directory.</li>
</ul>
<p>We understand that the above can be a bit technical, and that&#8217;s why we&#8217;re here to help. Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll fix this problem for you (or any other Joomla problem, for that matter) in no time and at a very <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">reasonable price</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/could-not-find-an-xml-setup-file-in-the-package-error-when-installing-a-joomla-extension/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSForm and Conflicts with Paypal IPN</title>
		<link>http://www.itoctopus.com/rsform-and-conflicts-with-paypal-ipn</link>
		<comments>http://www.itoctopus.com/rsform-and-conflicts-with-paypal-ipn#comments</comments>
		<pubDate>Fri, 27 Apr 2012 15:10:48 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1908</guid>
		<description><![CDATA[We have lately developed a solution for one of our clients, whereby if one customer purchases anything from his (our client&#8217;s) Joomla website using PayPal, a new Joomla account for that person is automatically created based on the person&#8217;s name and email address entered in PayPal. Additionally, the person receives a notification email (to his [...]]]></description>
			<content:encoded><![CDATA[<p>We have lately developed a solution for one of our clients, whereby if one customer purchases anything from his (our client&#8217;s) Joomla website using PayPal, a new Joomla account for that person is automatically created based on the person&#8217;s name and email address entered in PayPal. Additionally, the person receives a notification email (to his PayPal email address) containing his username and password to our client&#8217;s website. If the person already exists in the <em>jos_users</em> table, then what we do is just re-send a reminder email including the person&#8217;s credentials. We have accomplished this task by creating the user creation and email sending script inside a file called <em>paypal.php</em>, and by setting PayPal&#8217;s IPN (Instant Payment Notification) listener (in our client&#8217;s PayPal account) to that file. By doing the latter, every payment that is made towards our client&#8217;s account will automatically call the <em>paypal.php</em> file. (Check <a href="https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&#038;content_ID=developer/e_howto_admin_IPNSetup" target="_blank">this link</a> on PayPal if you want to know how to set the PayPal IPN).</p>
<p>Everything worked like a charm, but, after a while, our client came back to us and told us that some of the payments were not creating new users. Strange, we thought. We re-tested the script and everything seemed OK. We called back our client, and then he gave us the link of the page where the payments were not creating new users. It was a page containing an RSForm that had PayPal integration. We made a test payment there and to our surprise, the <em>paypal.php</em> file was not called.</p>
<p>The first thing we checked was if the payments were going to the same account, we checked this by logging in to his Joomla website&#8217;s backend, and then by going to <em>Components->RSForm Pro!</em> and then by clicking on <em>Configuration</em> in the tabbed menu, and then by clicking on <em>PayPal</em> in the sub-menu. The email was different (which meant it was a different account), so we informed the client, and so the client also updated the IPN listener for that PayPal account to <em>paypal.php</em>. We thought that the problem would be immediately solved. We were wrong. Our <em>paypal.php</em> was still not being notified. We then thought that since the other account is proven to be working, then why not change the email account for PayPal in RSForms to the email of the other (proven to be working) account. So we did that, and we tried a different payment, but still, no user was created (because the <em>paypal.php</em> was not called).</p>
<p>We then pondered, what if the RSForm component was overriding the PayPal notification URL (IPN). So we did a research, and then we discovered that there&#8217;s a System plugin, called, <em>rsfppaypal.php</em>, that invokes PayPal for any RSForm transaction, and that overrides the default PayPal IPN. Here&#8217;s the code that does that (it was located in line 439 of that file):</p>
<p><code>$link = $paypal_link . '?cmd=_xclick&#038;business=' . urlencode(RSFormProHelper::getConfig('paypal.email')) . '&#038;item_name=' . $products . '&#038;currency_code=' . urlencode(RSFormProHelper::getConfig('paypal.currency')). '&#038;amount=' . $price . '&#038;return_url='.urlencode(JURI::root().'index.php?option=com_rsform&#038;formId='.$args['formId'].'&#038;task=plugin&#038;plugin_task=paypal.return&#038;code='.$code).'&#038;notify_url='.urlencode(JURI::root().'index.php?option=com_rsform&#038;formId='.$args['formId'].'&#038;task=plugin&#038;plugin_task=paypal.notify&#038;code='.$code).'&#038;return='.urlencode(RSFormProHelper::getConfig('paypal.return')).'&#038;charset=utf-8'.$cancel_link.$language.$tax_code;<br />
</code></p>
<p>Take a look at this part from the above code:</p>
<p><code>notify_url='.urlencode(JURI::root().'index.php?option=com_rsform&#038;formId='.$args['formId'].'&#038;task=plugin&#038;plugin_task=paypal.notify&#038;code='.$code)</code></p>
<p>The above code is telling PayPal to use a component-set IPN instead of the default one. If you take a closer look, you&#8217;ll see that the above code is telling PayPal to notify a certain task, which is <em>paypal.notify</em> inside the <em>rsfppaypal.php</em> plugin. We searched for this task (inside the same System plugin) and here&#8217;s the code that we found:</p>
<p><code>
<pre>
			case 'paypal.notify':
				$this->rsfp_f_paypalNotify();
				exit();
			break;
</pre>
<p></code></p>
<p>As you can see, the <em>paypal.notify</em> case above handles all PayPal payments by invoking the <em>$this->rsfp_f_paypalNotify()</em>, so, in order to invoke our <em>paypal.php</em> file, we modified the above code to:</p>
<p><code>
<pre>
			case 'paypal.notify':
				$this->rsfp_f_paypalNotify();
				if ($_POST['payment_status'] == 'Completed')
					require_once('/path_to_file/paypal.php');
				exit();
			break;
</pre>
<p></code></p>
<p>And the problem was fixed! Our standard IPN file is now working even on RSForms, new users are being created, and notification emails are being sent!</p>
<p>We understand that the above might be a bit complicated, especially for those with no programming background, and that&#8217;s why we&#8217;re here to help. Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> if you want us to do the above for you and we&#8217;ll do it in record time and at a very <a href="http://www.itoctopus.com/fees" title="Our fees!">competitive price</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/rsform-and-conflicts-with-paypal-ipn/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Remove www from Your Joomla Website URLs</title>
		<link>http://www.itoctopus.com/how-to-remove-www-from-your-joomla-website-url</link>
		<comments>http://www.itoctopus.com/how-to-remove-www-from-your-joomla-website-url#comments</comments>
		<pubDate>Thu, 26 Apr 2012 18:04:41 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1574</guid>
		<description><![CDATA[For one reason or the other, you might decide to remove the www part from the URLs of your Joomla website. It might be that you have a short domain and you may want to emphasize the shortness of the domain even more, or it might be that you just don&#8217;t like seeing www in [...]]]></description>
			<content:encoded><![CDATA[<p>For one reason or the other, you might decide to remove the <em>www</em> part from the URLs of your Joomla website. It might be that you have a short domain and you may want to emphasize the <em>shortness</em> of the domain even more, or it might be that you just don&#8217;t like seeing <em>www</em> in your URLs. Some people mistakenly think that removing (or having) <em>www</em> will favorably affect their SEO standings &#8211; this is a myth. However, having consistent and non-redundant URLs by removing (or adding) <em>www</em> from all your URLs will certainly help your SEO. This is because of 2 things:</p>
<ul>
<li>A consistent website will look more professional from a search engine perspective.</li>
<li>There will be no non-intended duplicate content on your website (for example, <em>http://www.yourjoomlawebsite/article-1</em> and <em>http://yourjoomlawebsite.com/article-1</em> are considered to be duplicate content &#8211; although this duplicate content is soft, and is usually not punished by search engines).</li>
</ul>
<p><strong>Now, how to remove <em>www</em> from your Joomla website URLs?</strong></p>
<p>There are two ways to do this: one by modifying your <em>.htaccess</em> file and another by modifying your <em>index.php</em> file. We recommend modifying your <em>.htaccess</em> file because it&#8217;s easier and more efficient and because you won&#8217;t have to fiddle Joomla&#8217;s core code. Only go for the latter option (<em>index.php</em>) if you don&#8217;t have access to your <em>.htaccess</em> file.</p>
<ul>
<li><u>Removing <em>www</em> using .htaccess</u>
<p>Simply add the following code to the beginning of your <em>.htaccess</em> file<sup><a href="#remove-www-godaddy">1</a></sup>:</p>
<p><code>RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^yourjoomlawebsite.com<br />
RewriteRule (.*) http://yourjoomlawebsite.com/$1 [R=301,L]</code></p>
<p>(Note: we have discussed redirecting <em>non-www</em> to <em>www</em> before in our article about <a href="http://www.itoctopus.com/how-to-handle-duplicate-content-on-your-joomla-website" title="How to Handle Duplicate Content on Your Joomla Website?">handling duplicate content on your Joomla website</a>.)</p>
<p>Once you add the above lines, save the file, and upload it to your root directory. Try going to <em>http://www.yourjoomlawebsite.com/article-1</em>, you will notice that you are automatically redirected to <em>http://yourjoomlawebsite.com/article-1</em>.</p>
</li>
<li>
<p><u>Removing <em>www</em> by modifying your <em>index.php</em> file</u></p>
<p>As stated earlier, you should only modify your <em>index.php</em> if you&#8217;re unable, for some (mysterious) reason, to modify your <em>.htaccess</em> file, this is because you will be modifying a core Joomla file, which means that your edits might be wiped out (or affected) by future upgrades.</p>
<p>In any case, to remove <em>www</em> from your Joomla website URLs, you should add the following code at the beginning of your <em>index.php</em>:</p>
<p><code>
<pre>
function redirectURLNoWWW() {
	$currentURL = "";
	($_SERVER["HTTPS"] == "on")? $currentURL = 'https://' : $currentURL = 'http://';
	$currentURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
	$currentURLNoWWW = str_replace("http://www.", "http://", $currentURL);
	$currentURLNoWWW = str_replace("https://www.", "https://", $currentURL);
	if ($currentURLNoWWW != $currentURL)
		header("Location:".$currentURLNoWWW, TRUE, 301);
}
redirectURLNoWWW();
</pre>
<p></code></li>
</ul>
<p>Note that there are many 3<sup>rd</sup> party plugins that will also do the redirection for you, but we just wanted to show you how to do this manually! Doing this manually is sometimes better (especially when doing it through the <em>.htaccess</em> file), because some 3<sup>rd</sup> party plugins may create conflicts with your website.</p>
<p>If you need help doing the above, then you have found the right place! Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll take it from there! It usually takes us very little time to do the above and <a href="http://www.itoctopus.com/fees" title="Our fees">our fees</a> are very reasonable!</p>
<p><sup><a name="remove-www-godaddy">1</a></sup><em>Please note that most GoDaddy servers (at the time of writing this post) do not load the new <em>.htaccess</em> file instantly &#8211; and sometimes it might take up to an hour for your <em>.htaccess</em> to take effect.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-remove-www-from-your-joomla-website-url/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Admin Page in Joomla Redirects to Homepage</title>
		<link>http://www.itoctopus.com/admin-page-in-joomla-redirects-to-homepage</link>
		<comments>http://www.itoctopus.com/admin-page-in-joomla-redirects-to-homepage#comments</comments>
		<pubDate>Sat, 21 Apr 2012 14:53:59 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1884</guid>
		<description><![CDATA[One of our clients Joomla website had weird error today. When going to http://www.ourclientjoomlawebsite.com/administrator, our client was getting redirected to the homepage. We thought the work was easy because it wasn&#8217;t the first time we have seen this problem, it was actually the second time.
The first time we saw this problem (where our client&#8217;s admin [...]]]></description>
			<content:encoded><![CDATA[<p>One of our clients Joomla website had weird error today. When going to <em>http://www.ourclientjoomlawebsite.com/administrator</em>, our client was getting redirected to the homepage. We thought the work was easy because it wasn&#8217;t the first time we have seen this problem, it was actually the second time.</p>
<p>The first time we saw this problem (where our client&#8217;s admin page was redirecting back to the homepage) was a couple of months ago, and after a lot of investigation, we discovered that our client has enabled the <em>JSecure</em> extension and was going to <em>http://www.ourclientjoomlawebsite.com/administrator</em> instead of going to <em>http://www.ourclientjoomlawebsite.com/administrator/?hashkey</em>. Unfortunately, our client did not remember his <em>JSecure</em> hashkey, so we had to reset it for him. We were able to recover his <em>JSecure</em> hashkey the following way:</p>
<ul>
<li>We went to the <em>phpMyAdmin</em> of his database.</li>
<li>We then went to the <em>jos_plugins</em> table.</li>
<li>We searched for the the keyword <em>JSecure</em> in that table, and then we opened the associated row.</li>
<li>The value of <em>Key</em> under the column <em>Params</em> (short for parameters) of that row is the actual hashkey, we sent it to him.</li>
</ul>
<p>(Note that there was no need to reset the JSecure hashkey/password as it&#8217;s stored in clear text)</p>
<p>Now this time it was different, because the client didn&#8217;t have JSecure installed at all. We searched for a similar extension, but we couldn&#8217;t find any. In fact, our client had a very basic Joomla instance (almost no 3<sup>rd</sup> party extensions). Eventually we discovered that the problem lied in his <em>.htaccess</em> file, there was a weird redirect on the top of the file (we didn&#8217;t know why the redirect was there in the first place). We removed that redirect and the admin login was showing up again.</p>
<p>Please note that the above two scenarios are just the scenarios that we had with respect to this particular problem, there are potentially other issues causing this, so the above might not take care of the problem you&#8217;re having. If this is the case, then just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>! We&#8217;re friendly, we&#8217;re fast, and we&#8217;re always happy to serve. <a href="http://www.itoctopus.com/fees" title="Our fees">Our rates</a> are also very competitive.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/admin-page-in-joomla-redirects-to-homepage/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joomla Split Testing</title>
		<link>http://www.itoctopus.com/joomla-split-testing</link>
		<comments>http://www.itoctopus.com/joomla-split-testing#comments</comments>
		<pubDate>Thu, 19 Apr 2012 16:16:14 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1781</guid>
		<description><![CDATA[Split testing is probably one of the best tools that website owners/marketing managers can use to improve conversion rates from their sites. In this post, we will explain what split testing is (while highlighting its benefits) and how to use it on your Joomla website.
What is split testing?
Split testing (also called A/B testing) is a [...]]]></description>
			<content:encoded><![CDATA[<p>Split testing is probably one of the best tools that website owners/marketing managers can use to improve conversion rates from their sites. In this post, we will explain what split testing is (while highlighting its benefits) and how to use it on your Joomla website.</p>
<p><strong>What is split testing?</strong></p>
<p>Split testing (also called A/B testing) is a technique used to see which setup leads to more conversions &#8211; it can be applied in all industries and it dates back to even before the Internet era (contrary to popular belief). An example of split testing that we see constantly is when a nearby supermarket shuffles its products from one aisle to another or from one shelf to another to see which setup leads to more sales.</p>
<p>Split testing, in the Internet world, is when a website displays a different version of the website for different users. For example, if a website has about 1,000 visitors a day, 500 visitors will see one version of the website, and another 500 will see another version of the website. If there are 4 versions of the website, then 250 visitors will see version A, another 250 visitors will see version B, another 250 visitors will see version C, etc&#8230;</p>
<p>So, how do these versions differ from each other?</p>
<p>In most cases, the difference between the versions is the look &#038; feel. So, a flower shop owner, for example, might want to know which design leads to more sales &#8211; a white and simple design or a red and artistic design. So, he creates (or asks someone to create) two templates for his website &#8211; one that is white and simple and one that is red and artistic. He will then run the versions in parallel &#8211; where some visitors will see the white version and others will see the red version. He will then use some tools to know which version converts more.</p>
<p>While changing the look &#038; feel is the most common form of split testing, another form, which is also used a lot, is changing the content. For example, a consultancy website might want to display different <em>about us</em> pages to see which page converts best. In this case, the look &#038; feel is not changed for different versions, just the content of one or several pages.</p>
<p>The last example is the pricing. For example, a business offering online services, such a web hosting business, wants to increase its prices, so its runs two versions of its website, one with the old pricing structure and one with the new one (most likely each pricing structure is associated with a different hosting plan). After several days of testing, the business will be able to conclude whether the increase in price was <em>absorbed</em> by its new users or not. (if the conversion rate for the new pricing model is much lower than the conversion rate for the old pricing model, then most likely the business will not increase its prices). You can think of pricing as just another change in content, but when the different pricing is tied to e-commerce, then the complexity of running the other version(s) is exponentially higher.</p>
<p>Now, let&#8217;s get to the main topic of this post: <strong>how to do split testing on a Joomla website?</strong>.</p>
<p>From our experience, split testing on Joomla is a two part process:</p>
<ol>
<li><strong>Creating a different version of your website</strong>: Usually, the different version has a different template and/or different content and/or different pricing, so the way to do it is to pass a special variable in the URL of your website telling it to use <em>another</em> version, and then, based on that version, Joomla&#8217;s core needs to be modified to use a different theme, display different content, or use a different product pricing. (modifying Joomla&#8217;s core is a very delicate job and if you don&#8217;t have the programming expertise to do it then it&#8217;s certainly wiser to call some <a href="http://www.itoctopus.com/the-joomla-experts" title="The Joomla Experts">Joomla experts</a> to do this job for you).
</li>
<li>
<p><strong>Using Google&#8217;s website optimizer</strong>: The easiest way to manage split testing (or A/B testing) is by using Google&#8217;s website optimizer which can be found <a href="https://www.google.com/analytics/siteopt/splash?hl=en" target="_blank">here</a>. Google&#8217;s website optimizer allows you to implement split testing simply by filling in some forms (on Google&#8217;s website) and adding a JavaScript snippet on your website (the snippet will do all the work for you, it will display different versions of your website for different visitors, it will ensure that the same visitor always sees the same version, and it will track data about conversions). Google&#8217;s website optimizer also allows you to specify, to track, and to monitor conversions (we&#8217;re not advertising for Google, but it really is a very nice, and free tool that very few people know about).</li>
</ol>
<p>As you can see from the above, there&#8217;s some very delicate work to be done on your website and on your Google account. Fear not though, we are happy to say that we have the necessary expertise to do this so we can definitely help you implement split testing on your Joomla website. Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll take it from there. By the way, <a href="http://www.itoctopus.com/fees" title="Our fees!">Our fees</a> are reasonable and the rewards for doing split will far outweigh your costs!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/joomla-split-testing/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Error Reporting in Joomla</title>
		<link>http://www.itoctopus.com/error-reporting-in-joomla</link>
		<comments>http://www.itoctopus.com/error-reporting-in-joomla#comments</comments>
		<pubDate>Wed, 18 Apr 2012 16:04:52 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1824</guid>
		<description><![CDATA[You might have seen the &#8220;Error Reporting&#8221; field in your Joomla Configuration Settings, and you might have wondered what it is. In short, the &#8220;Error Reporting&#8221; field is responsible for controlling the display of errors on your Joomla website. In this post, we&#8217;ll discuss what should be the default error reporting on your website, when [...]]]></description>
			<content:encoded><![CDATA[<p>You might have seen the &#8220;Error Reporting&#8221; field in your Joomla Configuration Settings, and you might have wondered what it is. In short, the &#8220;Error Reporting&#8221; field is responsible for controlling the display of errors on your Joomla website. In this post, we&#8217;ll discuss what should be the default error reporting on your website, when to change the error reporting level, and what does each and every error reporting level mean (and do).</p>
<p><strong>What should be the default error reporting on your Joomla website?</strong></p>
<p>On any <em>production</em> Joomla website, the error reporting that should be used is &#8220;None&#8221;. This means that no errors are displayed on your website, regardless of the default settings on your hosting account. Preventing errors from being displayed on your production Joomla website is critical for the security of your website. This is because errors displayed can reveal some critical information about your website, including, but not limited to: the absolute path of your website (such as <em>/var/hosts/youraccountname/public_html/yourjoomlawebsite</em>), MySQL queries sent to your database server (revealing part of your database structure), the type of extensions you&#8217;re installing, etc&#8230; Some errors might reveal very critical information such as the database username and the database password. When Joomla is first installed, its default error reporting is &#8220;System Default&#8221;, this means that any error reporting in the global (or local) <em>php.ini</em> file will be <em>inherited</em> by your Joomla application. So, if the error reporting in the <em>php.ini</em> file is E_ALL, then the error reporting on your Joomla website will be E_ALL (which means that <em>all</em> the errors will be displayed to your visitors) &#8211; needless to say, the first thing that you need to do when you make your Joomla website live is changing the error reporting to &#8220;None&#8221;.</p>
<p><strong>When to change the error reporting?</strong></p>
<p>The error reporting should be changed from &#8220;None&#8221; to anything else only when you are seeing a blank page on your website and/or you are debugging your website. When doing so, we recommend that you create a condition in the <em>index.php</em> file to show the website&#8217;s content only for your IP (visitors to your website should see a blank page). This will ensure that only you will be able to see the errors on your website. Once you see the errors on your website, you should fix them, and then change the error reporting back to &#8220;None&#8221;.</p>
<p><strong>What does each and every reporting mean?</strong></p>
<p>Here are all the error levels on Joomla, along with a description:</p>
<ul>
<li><u>None</u>: All errors are suppressed. When you set the error reporting to &#8220;None&#8221;, then no errors are shown whatsoever on the website &#8211; except when 3<sup>rd</sup> party extensions override the Joomla error reporting settings with their own settings.
</li>
<li>
<p><u>System Default</u>: Joomla will inherit the error reporting from your <em>php.ini</em>. So, if <em>php.ini</em>&#8217;s <em>error_reporting</em> variable is set to E_ALL <u>and</u> the <em>display_errors</em> variable (in <em>php.ini</em>) is set to 1, then Joomla will display all the errors on your website (not good!).</p>
</li>
<li>
<p><u>Simple</u>: Joomla will display only the warnings and the fatal errors on the website (regardless of what the error reporting level in the <em>php.ini</em> file is). Basically all errors will be displayed with the exception of the notices.</p>
</li>
<li>
<p><u>Maximum</u>: Joomla will display all the errors, warnings, notices, deprecated functions calls, and strict standards on the website (again, Joomla will ignore the settings in the <em>php.ini</em> file). Note that when you display the notices/deprecated function call/strict standards you may break pages that were already working before.</li>
</ul>
<p><strong>Addendum: How to manually change the error reporting in the <em>configuration.php</em> file</strong></p>
<p>Sometimes, it&#8217;s more fun/convenient/expedient/practical to change the error reporting in Joomla&#8217;s <em>configuration.php</em> file directly (without using the interface). This will allow the administrator to have a more granular control over the level of errors that s/he wants to see on the website.</p>
<p>The important thing to remember here is that the value of the <em>$error_reporting</em> in the <em>configuration.php</em> file is the numerical value of PHP&#8217;s error constants (such as E_ALL, E_WARNING, E_NOTICE, etc&#8230;). See the below:</p>
<table style="border-collapse: collapse;" width="100%">
<tr>
<td width='20%' style='border: 1px solid #333' valign='top'><strong><em>$error_reporting</em></strong></td>
<td width='20%' style='border: 1px solid #333' valign='top'><strong>PHP equivalent</strong></td>
<td width='60%' style='border: 1px solid #333' valign='top'><strong>Errors displayed on the website</strong></td>
</tr>
<tr>
<td width='20%' style='border: 1px solid #333' valign='top'>32767</td>
<td width='20%' style='border: 1px solid #333' valign='top'>E_ALL | E_STRICT</td>
<td width='60%' style='border: 1px solid #333' valign='top'>All errors, warnings, notices, and strict standards</td>
</tr>
<tr>
<td width='20%' style='border: 1px solid #333' valign='top'>30719</td>
<td width='20%' style='border: 1px solid #333' valign='top'>E_ALL</td>
<td width='60%' style='border: 1px solid #333' valign='top'>All errors, warnings, notices</td>
</tr>
<tr>
<td width='20%' style='border: 1px solid #333' valign='top'>30711</td>
<td width='20%' style='border: 1px solid #333' valign='top'>E_ALL &#038; ~E_NOTICE</td>
<td width='60%' style='border: 1px solid #333' valign='top'>All errors, warnings, but no notices</td>
</tr>
<tr>
<td width='20%' style='border: 1px solid #333' valign='top'>30711</td>
<td width='20%' style='border: 1px solid #333' valign='top'>E_ALL &#038; ~(E_NOTICE|E_WARNING)</td>
<td width='60%' style='border: 1px solid #333' valign='top'>All Errors. No warnings or notices.</td>
</tr>
<tr>
<td width='20%' style='border: 1px solid #333' valign='top'>-1</td>
<td width='20%' style='border: 1px solid #333' valign='top'>0</td>
<td width='60%' style='border: 1px solid #333' valign='top'>No error reporting at all.</td>
</tr>
</table>
<p>Note: Some PHP versions differ in how error constants are evaluated. For example, for PHP versions that are >= 5.4.0, E_STRICT is part of E_ALL. If you want to know the actual <em>$error_reporting</em> value for your environment, it&#8217;s better to create a <em>test.php</em> file where you <em>echo</em> the value of your error reporting (for example: <code>echo(E_ALL);</code>), upload it to the server, and see what it prints.</p>
<p>If you&#8217;re having problems with your Joomla website and you need help, then all you need to do is to <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>. We&#8217;re very helpful, we&#8217;re always available, we&#8217;re very experienced in PHP and in Joomla, and we&#8217;re very friendly. Our services are <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">reasonably priced</a> too! What more could you want?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/error-reporting-in-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Have a Flash Intro on Your Joomla Website</title>
		<link>http://www.itoctopus.com/how-to-have-a-flash-intro-on-your-joomla-website</link>
		<comments>http://www.itoctopus.com/how-to-have-a-flash-intro-on-your-joomla-website#comments</comments>
		<pubDate>Mon, 16 Apr 2012 12:35:41 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1842</guid>
		<description><![CDATA[One of our clients wanted to display a Flash intro on her Joomla website. She had the Flash intro but she didn&#8217;t know how to add it to the website &#8211; she wanted her visitors to first see the Flash intro and then get redirected to the actual Joomla website either automatically or by clicking [...]]]></description>
			<content:encoded><![CDATA[<p>One of our clients wanted to display a Flash intro on her Joomla website. She had the Flash intro but she didn&#8217;t know how to add it to the website &#8211; she wanted her visitors to first see the Flash intro and then get redirected to the actual Joomla website either automatically or by clicking on an &#8220;Enter Website&#8221; link in the flash intro itself.</p>
<p>Now, this seems to be a trivial task, all one needs is to create an <em>index.html</em> file, include the flash intro in that <em>index.html</em>, and redirect to <em>index.php</em> from within the Flash movie once the page is fully loaded. Right? Well, as usual, nothing is as easy as it seems&#8230;</p>
<p>This is because in many cases, the above will not work, or will cause problems with your website, here&#8217;s why:</p>
<ul>
<li>Your <em>DirectoryIndex</em> gives <em>index.php</em> the highest priority, which means that <em>index.php</em> will be the first file to get executed, and then <em>index.*</em> (* might <em>htm</em>, <em>html</em>, or any other file extension), which, in its turn, means that your <em>index.html</em> (and subsequently your flash intro) will never be served to your visistors.
</li>
<li>
<p>In your Joomla website, you have your homepage set to <em>http://www.yourjoomlawebsite.com/</em>, which means that if the above works, everytime people click on the homepage link they will see the flash intro again (which can quickly become annoying and can reduce conversions).</li>
</ul>
<p>Here&#8217;s how to handle the problems above:</p>
<ul>
<li>In order to ensure that <em>index.html</em> is the default index file for your Joomla website, you will need to add the following code to the beginning of your <em>.htaccess</em> file (this file is located in the root directory of your website):
<p><code>DirectoryIndex index.html index.php</code></p>
<p>The above code will first run the <em>index.html</em>, which then calls the <em>index.php</em> from within the Flash movie. This way people will be able to see your flash intro.</p>
</li>
<li>
<p>As for the second problem, then you will need to make sure that the homepage link always points to <em>index.php</em>. You can do this by going to the <em>Menu Item Manager</em> for the <em>Main Menu</em>, and then changing the <em>Menu Item Type</em> of the <em>Home</em>&#8217;s menu item to <em>External Link</em>, and then setting the <em>Link</em> value of that <em>External Link</em> to <em>index.php</em>. This will force the website to go to the homepage of the Joomla website (and not <em>index.html</em>) when someone clicks on <em>Home</em>.</p>
<p>Another way for addressing the above problem is by using cookies. So, when someone accesses the website for the first time he will see the flash intro, but once he does that, the <em>index.html</em> file will set a cookie on his browser (let&#8217;s call it <em>flash_played</em>) that tells the browser that the flash introduction had already been played. Now, when the person goes to the homepage again, the <em>index.html</em> will see that the cookie <em>flash_played</em> is set to 1, so it will skip the flash intro and will redirect to the <em>index.php</em> file. Keep in mind that there are two downsides for this solution:</p>
<ol>
<li>It will not work for those who have disabled cookies on their browsers.</p>
</li>
<li>
<p>Visitors will only be able to see the flash intro once (because future hits on the <em>index.html</em> will automatically redirect them to the <em>index.php</em> without even displaying the flash intro). This problem can be solved by placing another <em>Menu Item</em> in your <em>Main Menu</em> of type <em>External Link</em> that will redirect to <em>http://www.yourjoomlawebsite.com?replay_intro=1</em>, and by modifying your <em>index.html</em> to check for the value of the <em>replay_intro</em> <em>GET variable</em>, if it&#8217;s 1 then the <em>index.html</em> file will replay the flash intro, regardless of whether the cookie <em>flash_played</em> was set to 1 or not. This means, however, that people need to click on a link to see the flash intro again.</li>
</ol>
<p>We personally think that the above method is cumbersome and inefficient and it&#8217;s better (and simpler) to solve this problem by pointing the homepage of your website to <em>index.php</em></li>
</ul>
<p>We realize that doing the above can be a bit intimidating, especially if you don&#8217;t have the necessary programming experience to do it, and that&#8217;s why we&#8217;re here to help! Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll be more than happy to do the above for you. By the way, <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">our fees</a> are very reasonable, so you don&#8217;t have to worry about that!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-have-a-flash-intro-on-your-joomla-website/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Menu Item Manager Empty in Joomla?</title>
		<link>http://www.itoctopus.com/menu-item-manager-empty-in-joomla</link>
		<comments>http://www.itoctopus.com/menu-item-manager-empty-in-joomla#comments</comments>
		<pubDate>Sun, 15 Apr 2012 17:03:37 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1827</guid>
		<description><![CDATA[While working on one of our clients&#8217; website (her version of Joomla was 1.5.14, but we think that this problem applies to all 1.5.x versions where x is less than 20), we noticed that the Menu Item Manager in Joomla&#8217;s backend had 0 men items, although the menu items existed as they were appearing on [...]]]></description>
			<content:encoded><![CDATA[<p>While working on one of our clients&#8217; website (her version of Joomla was 1.5.14, but we think that this problem applies to all 1.5.x versions where x is less than 20), we noticed that the <em>Menu Item Manager</em> in Joomla&#8217;s backend had 0 men items, although the menu items existed as they were appearing on the website. This means that there is a (most likely) PHP script error that is causing the menu items not to appear on this page. So, what we did was that we turned on <em>Error Reporting</em> on the <em>Global Configuration</em> page to see whether the page had any (hidden) PHP errors.</p>
<p>Sure enough, when we turned on error reporting, we went back to the <em>Menu Item Manager</em> page and we saw the following errors:</p>
<p><em>Warning: Parameter 4 to JHTMLMenu::treerecurse() expected to be a reference, value given in /ourclientjoomalwebsite/libraries/joomla/html/html.php on line 87<br />
Warning: array_slice() expects parameter 1 to be array, null given in /ourclientjoomalwebsite/administrator/components/com_menus/models/list.php on line 143<br />
Warning: Invalid argument supplied for foreach() in /ourclientjoomalwebsite/administrator/components/com_menus/models/list.php on line 147<br />
Warning: Invalid argument supplied for foreach() in /ourclientjoomalwebsite/administrator/components/com_menus/views/list/view.php on line 65<br />
Warning: Invalid argument supplied for foreach() in /ourclientjoomalwebsite/administrator/components/com_menus/views/list/tmpl/default.php on line 69</em></p>
<p>As programmers, we know that usually the first problem is the cause of the rest of the problems, so, fixing the first problem may fix the other problems as well. That&#8217;s why we went to the file <em>html.php</em> which is located under the <em>/ourclientjoomalwebsite/libraries/joomla/html/</em> directory. Here&#8217;s the code that we found at line 87:</p>
<p><code>return call_user_func_array( array( $className, $func ), $args );</code></p>
<p>Obviously, the function expects the second parameter to be passed by reference, and since we don&#8217;t care about the <em>$args</em> parameter after the function gets executed, we can safely pass it by reference to fix the problem (passing by reference means that any alterations to the parameter in the function are permanent, for example, if inside the function we set <em>$args</em> to <em>NULL</em>, then <em>$args</em> will be changed to <em>NULL</em> even when the function is finished executing). So, in order to fix the first problem, we changed the above code to the below:</p>
<p><code>return call_user_func_array( array( $className, $func ), &#038;$args );</code></p>
<p>(Notice the &amp; before <em>$args</em>.)</p>
<p>Surprise, surprise! After uploading the <em>html.php</em> file with the above change, everything started working again. The menu items appeared and we don&#8217;t see any other error on this page.</p>
<p><strong>But why was the <em>Menu Item Manager</em> empty in the first place?</strong></p>
<p>Usually this happens because of a PHP upgrade done on your server (most likely by your hosting company). Usually PHP/MySQL updates to your server can mean trouble to your Joomla website. Such updates, especially if your Joomla website is very old, can make your website fully dysfunctional.</p>
<p>If you have problems doing the above, or if you don&#8217;t have the necessary programming expertise to do so, then fear not, we&#8217;re here to help. Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll do the work for you in no time. We&#8217;ll only charge you an hour for doing the above (see <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">our reasonable fees</a>) and we&#8217;ll also check if you have other problems on your website resulting from the PHP upgrade.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/menu-item-manager-empty-in-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What Is Joomla&#8217;s Ideal Hosting Environment?</title>
		<link>http://www.itoctopus.com/what-is-joomlas-ideal-hosting-environment</link>
		<comments>http://www.itoctopus.com/what-is-joomlas-ideal-hosting-environment#comments</comments>
		<pubDate>Wed, 11 Apr 2012 18:51:02 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1818</guid>
		<description><![CDATA[One of the first questions that our new customers ask us is: &#8220;What is Joomla&#8217;s ideal hosting environment?&#8221;. They usually ask us this question out of frustration with their current hosting provider: they have done everything they could to optimize their Joomla website &#8211; they have even followed our advices on how to make a [...]]]></description>
			<content:encoded><![CDATA[<p>One of the first questions that our new customers ask us is: &#8220;What is Joomla&#8217;s ideal hosting environment?&#8221;. They usually ask us this question out of frustration with their current hosting provider: they have done everything they could to optimize their Joomla website &#8211; they have even followed our advices on <a href="http://www.itoctopus.com/how-to-make-your-joomla-website-faster" title="How to Make Your Joomla Website Faster">how to make a Joomla website faster</a>, yet their Joomla website remains slow, very slow! And now they believe that the problem lies with their hosting, and not with Joomla itself. They are right&#8230;</p>
<p>You see, there are two things that you need to know about Joomla (when it comes to its hosting environment):</p>
<ul>
<li>Not all hosting environments are suitable for Joomla.</li>
<li>The hosting environment can have dramatic (positive or negative) effects on your Joomla website.</li>
</ul>
<p>So, what are the things that make an ideal hosting environment for a Joomla website? In no order of importance, here they are:</p>
<ol>
<li><strong>Using cPanel</strong>: cPanel makes everything a breeze. It has an intuitive interface, it is really easy to spot any performance issues when using it, and its footprint on the server is very light (it has a negligible overhead). Plesk, on the other hand, is the worst platform to run Joomla on (regardless of what you&#8217;re hosting provider tells you) &#8211; if we had a dime every time we get a new Joomla customer who&#8217;s having a problem because of Plesk, we&#8217;d be billionaires (well, not really, but you get the point). Plesk generates a lot of problems for Joomla, from incompatible modules to wrong permissions, to wrong hacks done here and there by <em>other</em> developers trying to fix issues that were caused by Plesk in the first place. Avoid at all costs!</p>
</li>
<li>
<p><strong>Using Lite Speed as a web server</strong>: Lite Speed is a lighter and much faster web server than Apache. A Lite Speed server will increase the speed of your Joomla website often by a 100% (or even more). The only two downsides of Lite Speed is that it costs extra (well, not that much, it&#8217;s really $10-$20/month extra) and that not all hosting providers support it.</p>
</li>
<li>
<p><strong>Using memcached</strong>: You might have noticed that one of your caching options in Joomla is <em>memcached</em>. Memcached is a <em>memory object caching system</em> that will use memory to cache your Joomla database calls, as well as your Joomla rendered pages (among other things). This will dramatically increase the speed of your Joomla website.</p>
</li>
<li>
<p><strong>Using a PHP accelerator</strong>: There are 3 major PHP accelerators which are APC, eAccelerator, and xcache. Installing one of them on the server hosting your Joomla website will greatly increase your website&#8217;s speed. Note that APC is probably the best choice, and that&#8217;s why it&#8217;s going to be included in PHP6. eAccelerator is good (some say it&#8217;s faster than the other two), but it seems that it&#8217;s no longer actively supported. </p>
</li>
<li>
<p><strong>Running PHP as a DSO module</strong>: Most PHP implementations out there run as SuPHP. While the latter is more secure, the PHP DSO module is much faster and you won&#8217;t have any security issues with it if you follow <a href="http://www.itoctopus.com/10-security-tips-for-your-joomla-website" title="10 Security Tips for Your Joomla Website">our security tips</a> for your Joomla website.</p>
</li>
<li>
<p><strong>Having your own dedicated server</strong>: We can&#8217;t insist enough on the importance of having your own dedicated server to host your Joomla website. Doing so will ensure that the speed of your website is not adversely affected by other websites (that may or may not belong to you and may or may not be resource-hungry) that are hosted on the same server. It&#8217;s also much better for your security. A VPS is a good and affordable choice in case your Joomla website only gets a few hundred visitors a day. Shared hosting should be avoided whenever possible.</p>
</li>
<li>
<p><strong>Not hosting with your programmer/designer</strong>: This will not necessarily enhance the performance of your website, but it&#8217;ll make you sleep better at night. The thing is your programmer or designer is an individual, and not a company &#8211; he may find a full-time job and decide that he no longer wants your business, he may not want to work with you anymore (personal issues), he may put your website with literally hundreds of other sites on the same server, he might stop paying his server fees, he may even die! (what will happen to your website then?) We always advise our customers to avoid hosting with their developers/designers and opt for a real and decent hosting solution instead.</li>
</ol>
<p>If you need help implementing the above then we can do it for you. Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and you&#8217;ll see how friendly, caring, responsible, and motivated we are when working on your website. <a href="http://www.itoctopus.com/fees" title="Our rates">Our rates</a> are very reasonable too. Oh, and did we mention that we are very nice people to work with?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/what-is-joomlas-ideal-hosting-environment/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Joomla Website Does Not Go Offline!</title>
		<link>http://www.itoctopus.com/joomla-website-does-not-go-offline</link>
		<comments>http://www.itoctopus.com/joomla-website-does-not-go-offline#comments</comments>
		<pubDate>Mon, 09 Apr 2012 18:14:54 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1812</guid>
		<description><![CDATA[We were working on a very weird problem on a Joomla website this afternoon. The owner of the website told us that he wanted his website to be &#8220;offline&#8221;, so he went to Joomla&#8217;s configuration settings and set the &#8220;Site Offline&#8221; flag to &#8220;Yes&#8221;. He told us that even though he did that, his website [...]]]></description>
			<content:encoded><![CDATA[<p>We were working on a very weird problem on a Joomla website this afternoon. The owner of the website told us that he wanted his website to be &#8220;offline&#8221;, so he went to Joomla&#8217;s configuration settings and set the &#8220;Site Offline&#8221; flag to &#8220;Yes&#8221;. He told us that even though he did that, his website was still working (it wasn&#8217;t showing the offline page). The first thing that we told him to do is to logout (as admin) and see if the problem persists (Joomla is intelligent enough to allow logged in administrators to view the website even if it&#8217;s offline) &#8211; he did that and the problem was still there.</p>
<p>We then checked the website ourselves, and made sure that the settings were being saved properly in the <em>configuration.php</em> file. They were! So how come the website still shows up? We investigated further and our investigation led us to a file called <em>application.php</em> located under the <em>includes</em> folder, specifically the <em>render</em> method on the JSite class in that file, where there is a check if the <em>offline</em> flag is <em>on</em> or <em>off</em>. If the website is set to be offline, then this function call<em>$this-&gt;getCfg(&#8217;offline&#8217;)</em> should return a value equivalent to <em>true</em>. We did some tests and the function was indeed returning <em>true</em>. What are we missing?</p>
<p>We then checked the part that actually displays the &#8220;Website Offline&#8221; message, and it was encapsulated in this condition:</p>
<p><code>if ($this-&gt;getCfg('offline') &amp;&amp; !$user-&gt;authorise('core.login.offline')) {</code></p>
<p>If <em>$this-&gt;getCfg(&#8217;offline&#8217;)</em> was returning true, this means that the other part of the function was returning false, which means that <em>!$user-&gt;authorise(&#8217;core.login.offline&#8217;)</em> was returning false, which means that <em>$user-&gt;authorise(&#8217;core.login.offline&#8217;)</em> was returning true. So the key was to check the <em>authorize</em> method on the <em>$user</em> object.</p>
<p>After a lot of investigation, we concluded that the permissions for the user groups on that Joomla site were wrong &#8211; we fixed them. This is because the function <em>authorize</em> above should return false, while it&#8217;s returning true.</p>
<p>If you&#8217;re having hard time fixing the permissions (they can be very tricky), then a <em>quick</em> fix to the problem is changing the above line to the following:</p>
<p><code>if ($this-&gt;getCfg('offline')) {</code></p>
<p>Doing so, however, will make the website appear offline for you even if you are a <em>Super User</em> &#8211; a better way for the quick fix would be changing the above line to the below:</p>
<p><code>if ($this-&gt;getCfg('offline') &amp;&amp; ($user-&gt;name != "Super User")) {</code></p>
<p>Please note that the <em>application.php</em> is a core Joomla file &#8211; so any change there will affect your whole website &#8211; and may make it inoperable. Be very careful when working with this file &#8211; if you have any doubts &#8211; then don&#8217;t touch it and contact some <a href="http://www.itoctopus.com/the-joomla-experts" title="The Joomla Experts">Joomla Experts</a> to do the work for you.</p>
<p>If you still can&#8217;t turn off your Joomla website then your problem lies elsewhere or it might be that you&#8217;re having problems adding the above code to your <em>application.php</em> file. In any case, then feel free to <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>, we are always happy to serve and <a href="http://www.itoctopus.com/fees" title="Our affordable fees!">our rates</a> are very, <em>very</em> affordable! (&#8230;and we are very friendly!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/joomla-website-does-not-go-offline/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Remove Joomla&#8217;s Favicon</title>
		<link>http://www.itoctopus.com/how-to-remove-joomla-favicon</link>
		<comments>http://www.itoctopus.com/how-to-remove-joomla-favicon#comments</comments>
		<pubDate>Mon, 02 Apr 2012 16:44:56 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1743</guid>
		<description><![CDATA[Please note that this post will only show you to remove Joomla&#8217;s default favicon from your website. Check this post on how to add a favicon to your Joomla website.
Many Joomla websites still have the default Joomla&#8217;s favicon (favorite icon). Of course, they don&#8217;t have it by choice, they have it because Joomla, by default, [...]]]></description>
			<content:encoded><![CDATA[<p><em>Please note that this post will only show you to remove Joomla&#8217;s default favicon from your website. Check this post on <a href="http://www.itoctopus.com/how-to-add-a-favicon-to-your-joomla-website" title="How to Add a Favicon to Your Joomla Website" >how to add a favicon to your Joomla website</a>.</em></p>
<p>Many Joomla websites still have the default Joomla&#8217;s favicon (favorite icon). Of course, they don&#8217;t have it by choice, they have it because Joomla, by default, adds this favicon to any new Joomla website. Here&#8217;s how (the much disliked) Joomla&#8217;s favicon looks like:</p>
<p><center><img title="Joomla's Favicon" src="http://www.itoctopus.com/wp-content/uploads/2012/04/joomla-favicon.jpg" alt="Joomla's Favicon" width="21" height="19" /></center><center><em>Figure 1: The Joomla Favicon</em></center></p>
<p>Now how you can remove the Joomla&#8217;s favicon from your website once and for all?</p>
<p>In order to do so, you need to do the following (this is the easiest and most straightforward way and it always works):</p>
<ol>
<li>Go to your public website (such as <em>yourjoomlawebsite.com</em>).
</li>
<li>
<p>Right click anywhere on your homepage, and then click <em>View Page Source</em> if you are on Firefox or Chrome, or click on <em>View Source</em> if you are on IE. Once you do that, a new page opens containing the HTML source code of your website.</p>
</li>
<li>
<p>Now search for the word <em>shortcut icon</em> in your HTML source, and you will find a line like the following:</p>
<p><code>&lt;link rel="shortcut icon" href="http://www.yourjoomlawebsite.com/some-directory/favicon.ico" type="image/x-icon" /&gt;<br />
</code></p>
</li>
<li>
<p>FTP to your website, and then go to the <em>some-directory</em> folder, and then delete the favicon.ico file.</p>
</li>
<li>
<p>Delete the cache.</p>
</li>
<li>
<p>You&#8217;re done! Please note that Firefox caches the favicons, and it does take it a while for it to refresh the cache. As far as we know, there is no easy way to force Firefox to refresh the cache for favicons. So, make sure that you test your website on Chrome first in order to check that the favicon has been successfully removed.</li>
</ol>
<p>Now, you might be also wondering how to remove the favicon for the administrator&#8217;s part of Joomla (Joomla&#8217;s backend). If you want to do that, then you can just go to <em>http://www.yourjoomlawebsite.com/administrator</em> instead of <em>http://www.yourjoomlawebsite.com/</em> and follow the steps above, or you can just delete the file <em>favicon.ico</em> located under <em>/public_html/administrator/templates/khepri/</em>.</p>
<p>If you need help removing your Joomla&#8217;s favicon, then you can always <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>. This a straightforward job and we&#8217;ll do it in no time. By the way, <a href="http://www.itoctopus.com/fees" title="Our affordable fees!">our rates</a> are very affordable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-remove-joomla-favicon/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assigning Articles to Multiple Categories in Joomla</title>
		<link>http://www.itoctopus.com/assigning-articles-to-multiple-categories-in-joomla</link>
		<comments>http://www.itoctopus.com/assigning-articles-to-multiple-categories-in-joomla#comments</comments>
		<pubDate>Sat, 31 Mar 2012 19:44:59 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1747</guid>
		<description><![CDATA[One of the common questions that we get from owners of advanced Joomla websites is how to assign articles to multiple categories in Joomla. Our immediate answer to this question is that by default, Joomla does not allow assignment of an article to multiple categories (or sections). The answer we typically receive is &#8220;Why&#8221;, and [...]]]></description>
			<content:encoded><![CDATA[<p>One of the common questions that we get from owners of advanced Joomla websites is how to assign articles to multiple categories in Joomla. Our immediate answer to this question is that by default, Joomla does not allow assignment of an article to multiple categories (or sections). The answer we typically receive is &#8220;Why&#8221;, and &#8220;Is there a way to overcome this limitation?&#8221;. Let&#8217;s discuss each of these separately&#8230;</p>
<p><strong>Why doesn&#8217;t Joomla allow the assignment of an article to more than one category?</strong></p>
<p>One of the main reasons for this is SEF: By default, <a href="http://www.itoctopus.com/how-to-remove-the-category-name-from-the-url-in-joomla" title="How to Remove the Category Name from the URL in Joomla">Joomla adds the category alias of the article to the URL</a>. If Joomla allows you to assign your article to multiple categories, then which category alias should Joomla to display in the URL?</p>
<p>Another problem associated with the allowing of an article to have multiple categories is to avoid confusion. If a Joomla website owner who doesn&#8217;t have a lot of experience in Joomla decided to add his article to multiple categories, then his article will appear in several places on his website (which may or may not be what he desires).</p>
<p><strong>Is there a way to overcome this limitation?</strong></p>
<p>Jooma&#8217;s official website recommends a very <em>bad</em> way for dealing with this limitation, which is creating a duplicate article under the different category, which means that if you want to assign an article to 3 categories, then you have to create, and maintain, 3 versions of the same article. This will quickly turn into a nightmare if you have lots of articles on your website.</p>
<p>So, is there a better way to do this?</p>
<p>Yes, of course there is a better way &#8211; but it needs PHP programming on your Joomla website. What you can do is that you can modify the interface for the creation of a new article to allow users to select multiple categories (by changing the type of the <em>select</em> HTML tag containing the different categories to a <em>list</em>).</p>
<p>Modifying the interface is of course the first part, you will then need to modify the code that handles the adding and the displaying of the page on the website &#8211; not to mention, of course, slightly modifying the database structure for the <em>join table</em> between the categories and the articles.</p>
<p>Now here are several challenges and how to overcome them:</p>
<ul>
<li><em>How will SEF handle multiple categories?</em> The key here is to create a function that will return the id of the first category that is assigned to the article. Of course, there is a caveat here that categories with lower IDs will appear most in the articles&#8217; URLs. So, you should give your most important categories the lowest IDs. Now there&#8217;s always a way to go around this limitation, and it is by creating a new field called <em>category weight in URL</em>, which will be used when choosing the category to appear in the SEF (the category ID with the highest weight will be chosen &#8211; if there are two categories that have the same highest weight, then the category with the lowest ID will appear first).
</li>
<li>
<p><em>How to avoid negative effects on the SEO of the website?</em> When you have the same content appearing multiple times under different links, then you will have a problem with SEO (in fact, it is very possible that your website will be automatically flagged as a spam website by search engines which may penalize you). The solution to this problem is to always use the same URL with the same category to point to an article.</p>
</li>
<li>
<p><em>Will there be conflicts with 3<sup>rd</sup> party extensions?</em> Some (badly coded) third party extensions might not expect this change in the core. These extensions need to be modified so that they can still work under this change.</p>
</li>
<li>
<p><em>Will the template still work?</em> Same as 3<sup>rd</sup> party extensions, some templates need to be modified in order to accommodate this change.</li>
</ul>
<p>As you can see, something that you initially thought of as a simple task in Joomla was not that simple after all. It needs some modifications to your Joomla&#8217;s core and database, as well as some potential modifications to some of its template and some of its extensions. If you find this job to be intimidating, then fear not, we are here to help. Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll do all the work for you so that you&#8217;ll be able to assign your article to multiple categories. <a href="http://www.itoctopus.com/fees" title="Our fees!">Our rates are very cheap</a> so you don&#8217;t have to worry in that area! And we are very, very friendly!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/assigning-articles-to-multiple-categories-in-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Remove the Category Name from the URL in Joomla</title>
		<link>http://www.itoctopus.com/how-to-remove-the-category-name-from-the-url-in-joomla</link>
		<comments>http://www.itoctopus.com/how-to-remove-the-category-name-from-the-url-in-joomla#comments</comments>
		<pubDate>Thu, 29 Mar 2012 17:51:27 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1732</guid>
		<description><![CDATA[Let&#8217;s say that you are creating an article called &#8220;Privacy Policy&#8221; on your Joomla website. You add the article to your website, and the article&#8217;s URL becomes like this (if you have SEF enabled):
http://www.yourjoomlawebsite.com/uncategorized/privacy-policy
As you can see, the name of the category, which is uncategorized, is automatically added to the URL of the article. Now [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s say that you are creating an article called &#8220;Privacy Policy&#8221; on your Joomla website. You add the article to your website, and the article&#8217;s URL becomes like this (if you have SEF enabled):</p>
<p><em>http://www.yourjoomlawebsite.com/uncategorized/privacy-policy</em></p>
<p>As you can see, the name of the category, which is <em>uncategorized</em>, is automatically added to the URL of the article. Now you think a bit, and decide to add the article under a category called <em>general</em>, you check the link again and it&#8217;s something like:</p>
<p><em>http://www.yourjoomlawebsite.com/general/privacy-policy</em></p>
<p>Hmmm&#8230;. But you need to get rid of the category name from the URL altogether, whether it&#8217;s <em>uncategorized</em>, <em>general</em>, or any other category name. So you try to search for such a setting in Joomla&#8217;s <em>configuration settings</em>, but you find nothing. You then try to fiddle with your <em>.htaccess</em> file, but that doesn&#8217;t work either. Finally, your research the problem on Google, and you find that many other people have the same issue, and they have been, so far, unsuccessful in getting rid of that category name from the URL.</p>
<p>Now there are two ways to solve this problem, the easy way and the hard way.</p>
<p>The easy way consists of creating a category called &#8220;Privacy Policy&#8221;, adding the content of your current &#8220;Privacy Policy&#8221; article to the description of this category, deleting your &#8220;Privacy Policy&#8221; article, and finally creating a menu item that links directly to the category (the menu item must be of type <em>Category Blog Layout</em>). If you do this, your link will be as follows:</p>
<p><em>http://www.yourjoomlawebsite.com/privacy-policy</em></p>
<p>As you can see from the above, creating a category and pointing the menu item to a category instead of an article will solve the problem. The main advantage of this method is that is very fast and very efficient &#8211; the main disadvantage is that it can make your content disorganized (any staff member who wants to edit the <em>privacy policy</em> will be lost because he&#8217;ll not be able to find it in the <em>Article Manager</em>).</p>
<p>Now, the hard way is much more advanced and requires you to do the following:</p>
<ul>
<li>Modify Joomla&#8217;s SEF core files in order to remove the category name from the URL. (Note: There are several files that need to be changed.)</li>
<li>Ensure that the change you&#8217;ve done above is accommodated in your <em>.htaccess</em> file.</li>
<li>Ensure that you don&#8217;t break any functionality with this code change.</li>
</ul>
<p>Needless to say, the above is really delicate and complicated to do (not to mention that it requires modification to Joomla&#8217;s core, which makes your website <em>very challenging</em> when it comes to upgrades), and we advise you to only do it if you have some very solid PHP programming skills or if you hire some <a href="http://www.itoctopus.com/the-joomla-experts" title="The Joomla Experts">Joomla experts</a> to do it for you. In any case, we personally recommend you go with the first option, unless your website has a lot of data and a lot of categories.</p>
<p>Now If you need any help removing the category name from the URL, then you can just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>. <a href="http://www.itoctopus.com/our-joomla-emergency-services" title="Our Joomla Emergency Services">We&#8217;re always here for you</a>, we are fast, we are friendly, we are fun to work with, we are courteous, and <a href="http://www.itoctopus.com/fees" title="Our reasonable fees">we don&#8217;t charge much</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-remove-the-category-name-from-the-url-in-joomla/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stuck on the Language Selection Page (Joomla 2.5.2)</title>
		<link>http://www.itoctopus.com/stuck-on-the-language-selection-page-joomla-2-5-2</link>
		<comments>http://www.itoctopus.com/stuck-on-the-language-selection-page-joomla-2-5-2#comments</comments>
		<pubDate>Wed, 14 Mar 2012 20:37:27 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1704</guid>
		<description><![CDATA[We often do Joomla installation for our clients &#8211; usually the process is really fast. We first upload the zip file to the server, we extract it there, we create the database, and then we point our browser to http://ourclientjoomlawebsite.com, and we follow the installation process! That&#8217;s it! The process was always smooth for all [...]]]></description>
			<content:encoded><![CDATA[<p>We often do Joomla installation for our clients &#8211; usually the process is really fast. We first upload the zip file to the server, we extract it there, we create the database, and then we point our browser to <em>http://ourclientjoomlawebsite.com</em>, and we follow the installation process! That&#8217;s it! The process was always smooth for all Joomla versions: 1.5.25, 1.6, 1.7, and 2.5.2. However, today was different&#8230;</p>
<p>While trying to install Joomla 2.5.2 for one of our clients on his dedicated server, the installation process got stuck on the language selection page. Here&#8217;s the screen that we saw:</p>
<p><img src="http://www.itoctopus.com/wp-content/uploads/2012/03/joomla-stuck-language-selection-page.jpg" alt="Joomla 2.5.2 installation stuck on the language selection page" title="Joomla 2.5.2 installation stuck on the language selection page" width="468" height="299"/><center><em>Figure 1: Joomla 2.5.2 installation stuck on the language selection page</em></center></p>
<p>For some reason, the <em>spinning wheel</em> keeps spinning forever when you click on <em>Next</em> on the top right when you&#8217;re in the language selection screen. Obviously, this is blocking the whole Joomla installation from happening.</p>
<p>Some wrong theories (that we&#8217;ll debunk) about the cause of this problem are:</p>
<ul>
<li><strong>The PHP version on the server is not compatible with the version of Joomla that you&#8217;re trying to install</strong>: This theory is wrong, for the simple reason that Joomla will automatically detect the PHP version on the first step and will block the installation if your PHP version is not compatible with the version of Joomla that you&#8217;re trying to install.</p>
</li>
<li>
<p><strong>The PHP installation on the server does not JSON support and Joomla&#8217;s installation needs JSON</strong>: This theory is wrong because Joomla&#8217;s installation is smart enough to select which version of the install it should run (<em>setup.json.php</em> or <em>setup.php</em>, depending on whether your PHP installation has JSON support or not). Note that JSON support is required for Joomla 2.5.2, but it will not cause this problem. In case you don&#8217;t have JSON support, then the install will stop at step #2 of the installation process.</p>
</li>
<li>
<p><strong>The server doesn&#8217;t have enough free disk space to install Joomla</strong>: We had more than ample disk space on the server when we had this problem.</li>
</ul>
<p>Now after going through each and every file of the installation process and checking what&#8217;s going on, we discovered that the problem relates to Joomla&#8217;s installation process&#8217; inability to write to the file system &#8211; in other words, the problem relates to permission issues on the server.</p>
<p>After digging further, we discovered that the main user of the hosting account cannot FTP to the Joomla website &#8211; which was the real source of the problem. Once we fixed the permission issues associated with that user, everything worked fine. Joomla&#8217;s installation proceeded normally and our client was happy!</p>
<p>If you are getting stuck on the language selection page when installing Joomla and you need help, then just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>, and we&#8217;ll fix it for you in no time (and <a href="http://www.itoctopus.com/fees" title="Our fees!">our fees are not expensive</a> at all!).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/stuck-on-the-language-selection-page-joomla-2-5-2/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>&#8220;Allowed Memory Size of x Bytes Exhausted&#8221; Error on Joomla</title>
		<link>http://www.itoctopus.com/allowed-memory-size-of-x-bytes-exhausted-error-on-joomla</link>
		<comments>http://www.itoctopus.com/allowed-memory-size-of-x-bytes-exhausted-error-on-joomla#comments</comments>
		<pubDate>Thu, 08 Mar 2012 17:38:24 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1690</guid>
		<description><![CDATA[On one Sunday afternoon, you might decide to spend a lot of time browsing your Joomla website, just to make sure that all the pages are working fine. 15 minutes later, you see the following error:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 5298178 bytes)
What happened for you to see this [...]]]></description>
			<content:encoded><![CDATA[<p>On one Sunday afternoon, you might decide to spend a lot of time browsing your Joomla website, just to make sure that all the pages are working fine. 15 minutes later, you see the following error:</p>
<p><em>Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 5298178 bytes)</em></p>
<p>What happened for you to see this error, what is the cause of this error, how can you solve it immediately, and how can ensure that it won&#8217;t happen again?</p>
<p><strong>What happened?</strong></p>
<p>The allowed memory size is not a Joomla error, it&#8217;s a PHP error (here&#8217;s a list of all the <a href="http://www.itoctopus.com/are-you-suddenly-seeing-an-error-on-every-page-of-your-joomla-website" title="Are You Suddenly Seeing an Error on Every Page of Your Joomla Website?">possible errors that may occur on a Joomla website</a>). It happens when PHP needs more memory to run your scripts, but is unable to allocate more memory because its available memory limited to 128 MB (128 MB = 134217728 bytes &#8211; note that 128 MB is just an example, your memory limit might be smaller or higher). By default, the memory limitation is determined in the <em>php.ini</em> file.</p>
<p><strong>What is the cause of this problem?</strong></p>
<p>Joomla is a memory hungry CMS, and sometimes it takes a lot of memory to process a page, especially if that page contains many 3<sup>rd</sup> party extensions that are also heavy on the memory. On a recent job, the customer was using an extension that was creating an array out of a 200,000 row MySQL table. The extension author was not aware that his extension will be used to process such a large amount of data, and thus has not optimized it. Naturally, our customer was running into the &#8220;Allowed memory size&#8230;&#8221; error every time the extension ran.</p>
<p><strong>How can this problem be solved immediately?</strong></p>
<p>The fastest and most expedient way to solve this problem is by increasing the PHP memory limit. The PHP memory limit can be increased in one of the following 4 ways:</p>
<ol>
<li><strong>Increasing the PHP memory limit at the server level (global php.ini)</strong>: This can only be done if your website is running on a dedicated server or on a VPS. What you do is that you edit the <em>php.ini</em> file and change the <em>memory_limit</em> value to a larger amount. Once you do that, you will need to restart Apache in order for the changes to take effect.
</li>
<li>
<p><strong>Increasing the PHP memory limit at the application level (local.php.ini)</strong>: This can be done by just making a copy of your global <em>php.ini</em>, changing the <em>memory_limit</em> value to a larger amount, and then uploading the modified copy to the root directory of your Joomla website (e.g. <em>/public_html/</em> or <em>/public_html/yourjoomlawebsite.com/</em>). (You will need the server administrator to send you the global copy of <em>php.ini</em> in order to do this.)</p>
</li>
<li>
<p><strong>Increasing the PHP memory limit at the .htaccess level</strong>: This can be done by adding the below line to the beginning of your <em>.htaccess</em> file (which is located in the root directory of your website):</p>
<p><code>php_value memory_limit 512M</code></p>
<p>The above code will increase the PHP memory limit to 512 megabytes.</p>
</li>
<li>
<p><strong>Increasing the PHP memory limit at the code level</strong>: This can be done by adding the following line to your beginning of your <em>index.php</em> (which is located in the root directory of your Joomla website &#8211; do not add it to your <em>configuration.php</em>, because any change in your configuration settings will overwrite your <em>configuration.php</em> and your custom changes will be lost):</p>
<p><code>ini_set('memory_limit', '512M');</code></li>
</ol>
<p>Now what is the best way to increase the memory limit? We believe the best way to increase your memory limit is either by doing it in the <em>index.php</em> file or in the <em>.htaccess</em> file. This will ensure that if you decide to switch hosting companies, then your PHP memory settings will remain the same.</p>
<p><strong>How to ensure that you won&#8217;t see the problem again?</strong></p>
<p>Increasing the memory limit will not address the underlying issue causing this problem, which is bad code. The best way to solve this problem once and for all is to optimize the code causing your Joomla website to exhaust all the memory allocated for the PHP instance. In some cases, increasing the memory limit alone will not solve the problem at all (you will still see the fatal error). In this case you will need to fix the code.</p>
<p>Are you seeing the &#8220;Allowed Memory Size&#8230;&#8221; error on your website without being able to get rid of it? If this is the case then fear not, we&#8217;re here to help! Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll solve it for you in no time &#8211; and rest assured: our work <a href="http://www.itoctopus.com/fees" title="Our super cheap fees!">will not cost you much</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/allowed-memory-size-of-x-bytes-exhausted-error-on-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Create an E-Commerce Website from Scratch with Joomla</title>
		<link>http://www.itoctopus.com/how-to-create-an-e-commerce-website-from-scratch-with-joomla</link>
		<comments>http://www.itoctopus.com/how-to-create-an-e-commerce-website-from-scratch-with-joomla#comments</comments>
		<pubDate>Wed, 07 Mar 2012 20:37:38 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1674</guid>
		<description><![CDATA[We got a call yesterday from a potential client telling us that he wants to create an E-Commerce website and he heard that he can easily do that with Joomla. He wanted to do the job by himself and so he asked us if we can explain for him the process from scratch. And so [...]]]></description>
			<content:encoded><![CDATA[<p>We got a call yesterday from a potential client telling us that he wants to create an E-Commerce website and he heard that he can easily do that with Joomla. He wanted to do the job by himself and so he asked us if we can explain for him the process from scratch. And so we did&#8230; </p>
<p>Here&#8217;s a step-by-step easy-to-read guide on how to create an E-Commerce website from scratch (and for free!) in Joomla:</p>
<p><strong>Step 0 &#8211; Purchase a domain name</strong></p>
<p>A domain name is your brand on the Internet. A domain name is something like <em>google.com</em>, <em>joomla.org</em>, <em>itoctopus.com</em>, etc&#8230;</p>
<p>The domain name must be indicative of your business, especially if you&#8217;re not a big company. For example, if you&#8217;re selling canes in Florida, then your domain name must be something like <em>floridacanes.com</em>. A good domain name will help you a long way in your <a href="http://www.itoctopus.com/other-services#seo-consulting" title="SEO consulting!">SEO</a>.</p>
<p>In our opinion (and in the opinion of many) the cheapest place and the best place to buy domains is GoDaddy.com . To buy your domain name, just point your browser to GoDaddy.com, search for your domain name (to see if it&#8217;s available or not &#8211; if it&#8217;s not available then don&#8217;t despair, try to think of another name until you find one that it&#8217;s available), and then purchase it.</p>
<p>Congratulations, now you own a domain name! The very first step in creating your online store with Joomla!</p>
<p><strong>Step 1 &#8211; Purchase a hosting package</strong></p>
<p>As humans, we need homes to live in. Think about the hosting as the home of your website, where all your data (files and database) is located. Hosting is a separate service that need to be purchased. We do offer <a href="http://www.itoctopus.com/other-services#hosting">hosting</a> at itoctopus, but only for our clients. If you&#8217;re not one of our clients and you do not intend to be, then you can search for hosting packages on Google (just google <em>hosting packages</em>). Be very careful with choosing your hosting company as there are many bad hosting companies out there that only care about your money, and not your business. A word of advice: Don&#8217;t go for a hosting plan that might sound too good to be true. (very cheap, unlimited everything, etc&#8230;)</p>
<p>Once you purchase a hosting company, you will need to go back to GoDaddy to the domain management tool, and change the name servers of your domain to point to your new hosting company. Usually your hosting company will send you the name servers in your welcome email. Keep in mind that name servers will take some time to propagate, sometimes up to 48 hours. (Note: GoDaddy support will be able to help you change your name servers &#8211; failing that you can always call us!)</p>
<p><strong>Step 2 &#8211; Download Joomla</strong></p>
<p>At the time of writing this article, the latest version of Joomla is 2.5.2 (which was a security fix that was released today). You can download it by going to <em>http://www.joomla.org/download.html</em> and then by clicking on the <em>ZIP</em> link next to <em>Full Package</em> (the first <em>Full Package</em> entry from the top).</p>
<p><strong>Step 3 &#8211; Upload Joomla</strong></p>
<p>Now that you have downloaded Joomla, you have to upload it to your hosting account. You do this by extracting Joomla locally and then <em>FTPing</em> the Joomla source files to your hosting account. If this is your only website with that hosting company then you should FTP it to <em>public_html</em>. Alternatively, a faster way of doing this is by going to the <em>cPanel</em> of your hosting account, and then going to <em>File Manager</em>, and then uploading the Joomla zip file, and then extracting it under the <em>public_html</em> directory.</p>
<p><strong>Step 4 &#8211; Create the database</strong></p>
<p>Once you have uploaded Joomla to the server, you will need to create the database where all of your website&#8217;s data will be stored. You can create the database by going to the <em>cPanel</em> of your hosting account again, and then by clicking on the <em>MySQL Database Wizard</em> under <em>Databases</em>, and then following the instructions. Store the database name, the username, and the password in a safe place. You will need them later.</p>
<p><strong>Step 5 &#8211; Configure Joomla</strong></p>
<p>Now point your browser to the URL of your website (which is <em>http://www.floridacanes.com</em>). You will be asked to configure Joomla. We have described this whole process <a href="http://www.itoctopus.com/how-to-install-joomla-on-godaddy#joomla-godaddy-step-4" title="How to create the Joomla database on GoDaddy">here</a>. <u>Please note that you should leave <em>localhost</em> as <em>host name</em> in case you&#8217;re not using GoDaddy as your hosting provider.</u></p>
<p><strong>Step 6 &#8211; Download a template</strong></p>
<p>Congratulations, you now have a working website! Now all you need to do is to find a suitable template and download it. A simple search on Google for &#8220;joomla cane templates&#8221; for our cane website example will most likely reveal templates directly aimed at businesses selling canes (well, realistically it won&#8217;t, as this is a very small niche, so you might need to hire a designer or modify one of the existing templates to match your theme). You might find free and paid templates &#8211; paid Joomla templates are very cheap: most likely they will cost you less than $100. It&#8217;s also not hard to find a free Joomla template that is suitable for your business.</p>
<p>Once you find a suitable template, download it to your machine.</p>
<p><strong>Step 7 &#8211; Install the template</strong></p>
<p>If you&#8217;re using Joomla 2.5.x, then you can install the template the following way:</p>
<ul>
<li>Login to your Joomla control panel using &#8220;admin&#8221; as username and the passwrod you have entered in Step 5.</li>
<li>Click on <em>Extensions</em> -> <em>Extension Manager</em>.</li>
<li>Browse to locate the template that you have downloaded in the previous step, and then click on <em>Upload &amp; Install</em>.</li>
</ul>
<p>Now that the template is installed, you can make some changes to the main banner and to other components of the template. Make sure you read the manual that came with your Joomla template to know which extensions you need to download to make it look like the one in the demo. If you have any problem with your template, then see &#8220;<a href="http://www.itoctopus.com/joomla-template-is-not-working" title="Joomla Template Is Not Working!">My Joomla Template Is Not Working!</a>&#8220;.</p>
<p>Once the template is properly installed, you should make it the default template by going to <em>Extensions</em> -> <em>Template Manager</em>, clicking on the name of the template, choosing <em>All</em> next to <em>Default</em>, and finally clicking on <em>Save</em> on the top right.</p>
<p><strong>Step 8 &#8211; Create the basic pages</strong></p>
<p>In this step, you create the basic pages such as the homepage, the about us page, the contact us page, etc&#8230; The creation of these pages is simple and straightforward. If you need help in that area you can always call us!</p>
<p><strong>Step 9 &#8211; Download VirtueMart</strong></p>
<p>At this point, you have a fully working website, but you still don&#8217;t have a store. You need to create a store, and the best way to do it is to download and install VirtueMart. VirtueMart is a Joomla extension and can be downloaded for free at http://virtuemart.net/downloads. The current VirtueMart version is 2.0.2 and it&#8217;s compatible with the latest version of Joomla.</p>
<p><strong>Step 10 &#8211; Install VirtueMart</strong></p>
<p>VirtueMart can be installed the same way that you have installed the template. You just go to the <em>Extensions Manager</em>, locate the VirtueMart download on your machine, and then upload it. Once you upload it, VirtueMart will be installed automatically.</p>
<p><strong>Step 11 &#8211; Configure your store</strong></p>
<p>Now you have a store, but you just don&#8217;t have any products in your store. Go to <em>Components</em> -> <em>VirtueMart</em> in your Joomla control panel, and setup your store. You need to do the following:</p>
<ul>
<li><u>Create the main settings of your store</u>: Payment options (you can easily create a PayPal account and make the store point to your PayPal account, so when people purchase from you, they will send money to your PayPal account), shipping options, notifications, etc&#8230;
</li>
<li>
<p><u>Create the categories</u>: The categories encapsulate your products. For example, in our canes example, we might have a category called <em>Accessories</em>.</p>
</li>
<li>
<p><u>Add your products</u>: Now you need to add your products. You should add the name, the description, and the price of your products. In case of downloadable content, you need to upload the files that will be downloaded by your customers.</li>
</ul>
<p><strong>Step 12 &#8211; Link to your store</strong></p>
<p>Create a menu item that will link to your VirtueMart store. Just go to <em>Menus</em> -> <em>Main Menu</em> (in your Joomla control panel) and click on <em>New</em> on the top right to add a new menu item, and then in <em>Menu Item Type</em>, choose <em>VirtueMart</em>.</p>
<p><strong>Step 13 &#8211; Your store is now open!</strong></p>
<p>Congratulations, your store is now open for business! You can now sell your products or services online!</p>
<p>We understand that the above can be a bit intimidating, and that&#8217;s why we&#8217;re here to help. We can help you create your online store from scratch, just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">let us know</a> the nature of your business and we&#8217;ll take care of the rest. This will take us about 2-3 days (16-24 hours) of work (see our <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">very reasonable rates</a> to calculate how much it&#8217;ll cost you).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-create-an-e-commerce-website-from-scratch-with-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Prevent SQL Injection in Joomla</title>
		<link>http://www.itoctopus.com/how-to-prevent-sql-injection-in-joomla</link>
		<comments>http://www.itoctopus.com/how-to-prevent-sql-injection-in-joomla#comments</comments>
		<pubDate>Tue, 06 Mar 2012 19:44:44 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1648</guid>
		<description><![CDATA[SQL Injection is the most dangerous hacking techniques out there. With SQL injection, a malicious attack can drop you a table or even a whole database in a few seconds and with a very simply command through your website. In this day and age, it is unacceptable for any website to have a SQL injection [...]]]></description>
			<content:encoded><![CDATA[<p>SQL Injection is the most dangerous hacking techniques out there. With SQL injection, a malicious attack can drop you a table or even a whole database in a few seconds and with a very simply command through your website. In this day and age, it is unacceptable for any website to have a SQL injection vulnerability, since security experts have been warning about SQL injection for at least a decade now &#8211; and, addressing SQL injection is a well known and well documented process.</p>
<p><strong>How does SQL injection happen?</strong></p>
<p>Let&#8217;s say you have the following page on your website: <em>http://www.yourjooomlawebsite.com?userid=5</em>. This page displays the information about the user on your website with an id = 5. Somewhere in the page displaying your website, you have this code:</p>
<p><code><br />
	$user_id = $_GET['user_id'];<br />
	$db =&#038; JFactory::getDBO();<br />
	$db =&#038; JFactory::getDBO();<br />
	$sql = "SELECT * FROM jos_users WHERE user_id='".$user_id."'";<br />
	$user_information = $db->Execute();<br />
</code></p>
<p>Now, when the id is 5, then the query above will be:</p>
<p><code>SELECT * FROM jos_users WHERE user_id='5'</code></p>
<p>The above is OK, and it&#8217;ll work. But an unscrupulous visitor might change your URL to the following: <em>http://www.yourjooomlawebsite.com?userid=5&#8242;; TRUNCATE TABLE jos_users&#8211;</em></p>
<p>Here&#8217;s what will happen in the above case:</p>
<ul>
<li>The query will become <code>SELECT * FROM jos_users WHERE user_id='5'; TRUNCATE TABLE jos_users--'</code> &#8211; which means that instead of having one query, we have now two queries.</li>
<li>The first query is executed, and the information about the user with id equals to 5 is stored in the memory.</li>
<li>The second query, <code>TRUNCATE TABLE jos_users</code> is executed. This query will <u>delete your users table!</u></li>
<li>The <code>--</code> is the comment syntax in MySQL, and thus everything after it will be ignored. This means that the apostrophe will be considered as a comment and will be silently ignored. This prevents MySQL from generating an error because of the apostrophe and ensures that the malicious SQL query will run smoothly.</li>
</ul>
<p>Now, of course, the above URL can do far more damage if it&#8217;s something like <em>http://www.yourjooomlawebsite.com?userid=5&#8242;; DROP DATABASE yourjoomladatabasename&#8211;</em>. This URL will delete your whole database!</p>
<p>I think after reading the above it&#8217;s easy to realize how much damage can someone do to your website with very little effort!</p>
<p><strong>Where does SQL Injection happen?</strong></p>
<p>The core Joomla installation of any of the recent versions: 1.5.25 and 2.5.1 doesn&#8217;t have any SQL injection problem (some versions prior to these versions may have SQL injection problems) &#8211; so if you install the latest version of Joomla on your website and only use the official extensions, you&#8217;re safe. However, once you start installing 3<sup>rd</sup> party extensions (which is usually the case for any Joomla website administrator), then you might start running into security issues. The thing is, the Joomla engine tries its best to secure the bad code in 3<sup>rd</sup> party extensions &#8211; however, it&#8217;s not always successful at this task, especially if the code is really, really bad like the code above.</p>
<p><strong>How can you protect your Joomla website from SQL injection?</strong></p>
<p>There are several things that you should do in order to protect your Joomla website from SQL injection &#8211; these things must be done at the MySQL level, the PHP engine level, and the code level:</p>
<ol>
<li><u>Things to be done at the MySQL level to prevent SQL injection:</u>
<ul>
<li>
<p>Disable comments. This alone will prevent the above malicious SQL from running as its syntax becomes wrong (because of the quote).</li>
<li>Do not give DROP and TRUNCATE permissions to the Joomla MySQL user. This is a good practice but may cause problems for you when you uninstall an extension that creates its own tables (the uninstall process of the extension will not deal the associated tables).</li>
</ul>
</li>
<li>
<p><u>Things to be done at the PHP engine level to prevent SQL injection:</u></p>
<p>There is only one thing to be done at the PHP engine level to prevent SQL injection, and it is to make sure that the flag <em>magic_quotes</em> is set to &#8220;on&#8221; in your <em>php.ini</em> file. Magic quotes escape user input automatically by adding slashes to quotes. <strong>Note that as of PHP 5.4.0, this flag has been deprecated which means that a lot of previously thought secure code running under earlier versions of PHP will no longer be secure under new versions of PHP.</strong></p>
</li>
<li>
<p><u>Things to be done at the code level to prevent SQL injection:</u></p>
<ul>
<li>Never, ever trust user input. Always work with the mindset that user input is <em>bad</em>.</li>
<li>Use the Joomla static function <em>JRequest::getVar($variable_name);</em> instead of accessing request variables directly through $_GET and $_POST. For example, if you want to access the above variable, you write the following code:
<p><code>$user_id= JRequest::getVar($user_id);</code></p>
<p>By using this function to access request variables, you will ensure that all user data is filtered before it&#8217;s used somewhere else (such as in SQL queries).</p>
</li>
<li>
<p>Use <em>eval</em> functions very, very carefully &#8211; especially when you&#8217;re evaluating user input.</p>
</li>
<li>
<p>Strip the words <em>eval</em> and <em>call_user_func</em> from user input. This is an added security measure in case you have a security hole in your code that you are not aware of.</li>
</ul>
</li>
</ol>
<p>Doing the above will ensure that your visitors are not able to <em>break</em> your Joomla website by injecting malicious SQL into your code. We also suggest that you read these <a href="http://www.itoctopus.com/10-security-tips-for-your-joomla-website" title="10 Security Tips for Your Joomla Website<br />
">security tips</a> to enhance the security of your Joomla website.</p>
<p>If you don&#8217;t have the technical skills to do the above, then worry not. We&#8217;re here to help. Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll ensure that your website becomes safe from SQL injection. By the way, <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">our fees</a> are <em>very</em> reasonable!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-prevent-sql-injection-in-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Delete All Products from VirtueMart?</title>
		<link>http://www.itoctopus.com/how-to-delete-all-products-from-virtuemart</link>
		<comments>http://www.itoctopus.com/how-to-delete-all-products-from-virtuemart#comments</comments>
		<pubDate>Mon, 05 Mar 2012 18:57:00 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1614</guid>
		<description><![CDATA[Warning: This post is about removing content from your database, specifically your VirtueMart e-commerce/store tables. If this is not what you want then please stop reading now. itoctopus claims no responsibility (neither explicit nor implicit) whatsoever if you accidentally remove data that you later need.
Before you begin you need to download a backup and make [...]]]></description>
			<content:encoded><![CDATA[<p><em>Warning: This post is about removing content from your database, specifically your VirtueMart e-commerce/store tables. If this is not what you want then please stop reading now. itoctopus claims no responsibility (neither explicit nor implicit) whatsoever if you accidentally remove data that you later need.</em></p>
<p>Before you begin you need to download a backup <u>and</u> make a copy of your whole Joomla database, including your VirtueMart tables (we know that a backup is sufficient, but the copy will expedite the reversal of errors should your website becomes inoperable because of an accidental deletion of a system table for example):</p>
<p><strong>Download a backup your Joomla database</strong></p>
<p>The first thing to do is to download a backup of your Joomla database to your local machine. This can be easily done from cPanel (if you don&#8217;t have cPanel then ask your hosting company to do the backup for you):</p>
<ul>
<li>Login to your cPanel account. You can usually do so by going to <em>http://yourjoomlawebsite.com/cpanel</em> or <em>http://yourjoomlawebsite.com:2083</em> and enter the login credentials supplied to you by your web hosting company.
</li>
<li>
<p>Once you&#8217;re logged in to cPanel, you should click on <em>Backups</em> (under <em>Files</em>), click the name of your database under <em>Partial Backups</em> &#8211; <em>Download a MySQL Database Backup</em>, and then wait for your database to be downloaded.</li>
</ul>
<p><strong>Copy Your Joomla Database</strong></p>
<p>Copying your Joomla database is an extra security measure in case something goes wrong. When you have an immediate copy of your Joomla database, then you can just rename the original database to something like <em>myjoomladatabse_old</em> and rename the copy to <em>myjoomladatabase</em> and everything will work as before.</p>
<p>Here&#8217;s what you should do to make the copy:</p>
<ul>
<li>Login to your cPanel account as described above and then click on the <em>phpMyAdmin</em> icon under <em>Databases</em>.
</li>
<li>
<p>You should now be logged in automatically to <em>phpMyAdmin</em>. The next thing to do is to click on your database name, and then click on <em>Operations</em> on the top right, and then under <em>Copy Database to:</em> enter the name of the database copy, which should be something like <em>yourjoomladatabase2</em> (where <em>yourjoomladatabase</em> stands for the current name of the database), and then click on <em>Go</em>. The process may take some time in case you have a lot of data on your website. Once the copy process is done, you will see something like <em>Database yourjoomladatabase has been copied to yourjoomladatabase2</em>.</li>
</ul>
<p>Now that you&#8217;ve done the above, you can go ahead with the deletion of all your products in your VirtueMart store. Here&#8217;s how it should be done:</p>
<ul>
<li>Go to <em>phpMyAdmin</em> (the process of going to phpMyAdmin has already been described above)
</li>
<li>
<p>Click on the name of the database of your Joomla website. In our example, the name of this database is <em>yourjoomladatabase</em>.</li>
</ul>
<p>Now there are two methods for deleting your data, Method #1 and Method #2. Method #1 takes more time but is non-technical, Method #2 can be done in a significantly shorter time but is a bit more technical:</p>
<ul>
<li>Method #1: Click on the name of your Joomla database in <em>phpMyAdmin</em>, and then click on the <em>Empty</em> icon next to the table <em>jos_vm_product</em>. This will delete all the products in your database. You should also do the same for the following tables:
<ul>
<li>jos_vm_product_attribute</li>
<li>jos_vm_product_attribute_sku</li>
<li>jos_vm_product_category_xref</li>
<li>jos_vm_product_discount</li>
<li>jos_vm_product_download</li>
<li>jos_vm_product_files</li>
<li>jos_vm_product_mf_xref</li>
<li>jos_vm_product_price</li>
<li>jos_vm_product_product_type_xref</li>
<li>jos_vm_product_relations</li>
<li>jos_vm_product_reviews</li>
<li>jos_vm_product_type</li>
<li>jos_vm_product_type_parameter</li>
<li>jos_vm_product_votes</li>
</ul>
<p>The above tables hold information that relates to your existing products. Not deleting them will cause confusion with VirtueMart in case you decide to add products to your VirtueMart store again.</p>
</li>
<li>
<p>Method #2: Click on the name of your Joomla database in <em>phpMyAdmin</em> and copy the following code:</p>
<p><code>TRUNCATE TABLE `jos_vm_product`;<br />
TRUNCATE TABLE `jos_vm_product_attribute`;<br />
TRUNCATE TABLE `jos_vm_product_attribute_sku`;<br />
TRUNCATE TABLE `jos_vm_product_category_xref`;<br />
TRUNCATE TABLE `jos_vm_product_discount`;<br />
TRUNCATE TABLE `jos_vm_product_download`;<br />
TRUNCATE TABLE `jos_vm_product_files`;<br />
TRUNCATE TABLE `jos_vm_product_mf_xref`;<br />
TRUNCATE TABLE `jos_vm_product_price`;<br />
TRUNCATE TABLE `jos_vm_product_product_type_xref`;<br />
TRUNCATE TABLE `jos_vm_product_relations`;<br />
TRUNCATE TABLE `jos_vm_product_reviews`;<br />
TRUNCATE TABLE `jos_vm_product_type`;<br />
TRUNCATE TABLE `jos_vm_product_type_parameter`;<br />
TRUNCATE TABLE `jos_vm_product_votes`;</code></p>
<p>and then click on <em>SQL</em> on the top of <em>phpMyAdmin</em> (while you&#8217;re in the same database), and then paste the code above, and then click on <em>Go</em>. This will delete all the tables in one shot (instead of you clicking on the <em>Empty</em> button next to each and every table).</p>
</li>
<li>
<p>Now that you&#8217;ve deleted the products from the database, you will also need to delete the images associated with these products. We suggest that you only proceed with this after downloading a full backup of your website. Once that is done, you will need to login through FTP to your website, and then delete the <em>product</em> folder located under <em>/public_html/components/com_virtuemart/shop_image/</em>. A more expedient way of doing this is logging in to cPanel, and then clicking on <em>File Manager</em> under <em>Files</em> (on the cPanel homepage), and then deleting the <em>/public_html/components/com_virtuemart/shop_image/product/</em> folder</li>
</ul>
<p>Now if you want to delete all your products from your VirtueMart store and you feel that the above is a bit too technical, then we&#8217;ll be happy to do it for you. All you need to do is to <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>. We&#8217;ll take care of this in no time and at <a href="http://www.itoctopus.com/fees" title="Our fees!">very low cost</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-delete-all-products-from-virtuemart/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Upgrade from Joomla 1.0.0 to Joomla 2.5.1</title>
		<link>http://www.itoctopus.com/how-to-upgrade-from-joomla-1-0-0-to-joomla-2-5-1</link>
		<comments>http://www.itoctopus.com/how-to-upgrade-from-joomla-1-0-0-to-joomla-2-5-1#comments</comments>
		<pubDate>Thu, 01 Mar 2012 21:52:50 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1595</guid>
		<description><![CDATA[Yesterday, we worked on a website that was using Joomla 1.0.0. The owner of the website had three problems:

Problem #1: The website was displaying &#8220;Your are not authorized to view this resource&#8221; on the homepage. Well, it wasn&#8217;t technically the homepage, as the website had a flash introduction that was redirecting to an article on [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, we worked on a website that was using Joomla 1.0.0. The owner of the website had three problems:</p>
<ul>
<li>Problem #1: The website was displaying <em>&#8220;Your are not authorized to view this resource&#8221;</em> on the homepage. Well, it wasn&#8217;t <em>technically</em> the homepage, as the website had a flash introduction that was redirecting to an article on the website. The cause of the problem was that the article the flash introduction was redirecting to was unpublished. We solved the problem by publishing the article again.
</li>
<li>
<p>Problem #2: Every page on his website was displaying the following warning (no content was displayed &#8211; just this warning): <em>&#8220;Warning: Parameter 1 to HTML_content::show() expected to be a reference, value given in /public_html/includes/Cache/Lite/Function.php on line 92&#8243;</em>. The cause of this problem was because Joomla 1.0.0 is incompatible with PHP 5.3 and above. We fixed the problem by changing going to the <em>Function.php</em> file, and changing every instance of <em>$arguments</em> in the parameters of the function <em>call_user_func_array</em> to <em>&#038;$arguments</em>.</p>
</li>
<li>
<p>Problem # 3: The contact us page had the following error: <em>&#8220;Fatal error: Cannot redeclare quoted_printable_encode() in /public_html/includes/vcard.class.php on line 37&#8243;</em>. The cause of this problem is that the function <em>quoted_printable_encode</em> is now included in PHP (versions equal or above 5.3.0) so it was being redefined in the code. We solved the problem by commenting out the function (you can also solve it by changing the name of the function to <em>quoted_printable_encode2</em>) in the <em>vcard.class.php</em> file.</li>
</ul>
<p>Needless to say, all these problems happened following the upgrade of PHP on the server where our client&#8217;s website resides. Although the PHP upgrade directly caused these problems, it was definitely the right thing to do. The PHP version that was installed before was really old and the server needed to support newer applications &#8211; regardless of whether this upgrade causes very old applications to break (we suspect that&#8217;s the reason <a href="http://www.itoctopus.com/how-to-install-joomla-on-godaddy#why-joomla-2.5.1-will-not-work-on-godaddy" title="Why Your GoDaddy’s Hosting Is Not Compatible with Joomla 2.5.1 (or Joomla 1.7)">why GoDaddy still has a very old version of PHP on some of its old servers that does not support Joomla 1.7 and Joomla 2.5.1</a> &#8211; GoDaddy just doesn&#8217;t want to break old websites that are hosted on its servers)</p>
<p>In any case, we recommended our client to upgrade to the latest version of Joomla because of the following reasons:</p>
<ol>
<li>Joomla 1.0.0 is no longer supported: Joomla 1.0.0 was released nearly 7 years ago (back in September of 2005) and its official support was discontinued many, many years ago.
</li>
<li>
<p>Joomla 1.0.0 has many security holes that were addressed in later versions of Joomla. Joomla 1.0.0 was the developers&#8217; first take at customer management systems (well, more or less, since most of these developers were working on Mambo before).</p>
</li>
<li>
<p>Joomla 1.0.0 will not work on new servers. This is because it suffers from compatibility problems with newer versions of PHP and MySQL (MySQL compatibility problems are common in very old Joomla extensions).</p>
</li>
<li>
<p>The administrator will be missing on all the latest extensions when using Joomla 1.0.0. This is because all the current extensions are mainly written for Joomla 1.5 and up.</p>
</li>
<li>
<p>Non-official support is scarce for very old versions of Joomla. While we, at itoctopus, support every version of Joomla, most of our competitors don&#8217;t. Which means that it&#8217;s really hard to get support when you have a very old Joomla website.</li>
</ol>
<p>Our client then emailed us back asking about the process involved in upgrading from Joomla 1.0.0 to Joomla 2.5.1 and how much time it&#8217;ll take. So we explained the process the following way:</p>
<ul>
<li>We will need to upgrade through hops &#8211; e.g. upgrade from Joomla 1.0.0 to Joomla 1.0.3 to Joomla 1.0.13, etc&#8230; And at every hop we need to test the website, make sure that everything is working properly, fix any bugs, re-test the website, backup the website, and then do the next upgrade.</p>
</li>
<li>
<p>We will have many hops to move from Joomla 1.0.0 to Joomla 1.5.25.</p>
</li>
<li>
<p>We will definitely be faced by the challenges that some (if not all) of the 3<sup>rd</sup> party extensions will no longer work and we need to fix them.</p>
</li>
<li>
<p>We will be faced by the problem that some of the content will not be migrated properly &#8211; especially content generated by 3<sup>rd</sup> party extensions, and we will need to migrate that content manually.</p>
</li>
<li>
<p>Once we reach Joomla 1.5.25, we can then migrate directly to Joomla 2.5.1</li>
</ul>
<p>Of course, the time it takes to migrate from Joomla 1.0.0 to Joomla 2.5.1 depends on the number of 3<sup>rd</sup> party extensions and the amount of data your website has. Generally, the process takes anything between 12 hours and 2 days.</p>
<p>If you have a Joomla 1.0.0 then we strongly advise that you update it the latest version of Joomla. Your website may soon encounter problems with your hosting environment (especially if you&#8217;re on shared hosting), is prone to security attacks, and you&#8217;ll be missing on the myriad of Joomla extensions out there. We can help you do this, just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll take it from there! We are fast, we are efficient, we care about your business, and <a href="http://www.itoctopus.com/fees" title="Our affordable rates">our rates</a> are very affordable! What are you waiting for?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-upgrade-from-joomla-1-0-0-to-joomla-2-5-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is Your Joomla Article Not Updating?</title>
		<link>http://www.itoctopus.com/is-your-joomla-article-not-updating</link>
		<comments>http://www.itoctopus.com/is-your-joomla-article-not-updating#comments</comments>
		<pubDate>Wed, 29 Feb 2012 02:10:39 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1576</guid>
		<description><![CDATA[We receive a call every other day from new clients telling us that one of their Joomla articles is not updating: They can see the updates in the backend, but the frontend does not show the updates. In most cases, there are three simple reasons behind this:

The article is retrieved from the cache: When caching [...]]]></description>
			<content:encoded><![CDATA[<p>We receive a call every other day from new clients telling us that one of their Joomla articles is not updating: They can see the updates in the backend, but the frontend does not show the updates. In most cases, there are three simple reasons behind this:</p>
<ol>
<li><strong>The article is retrieved from the cache</strong>: When caching is used, then updates to your Joomla article will not appear because the article&#8217;s page or parts of the article&#8217;s page will be retrieved from the cache. Solving the problem requires you to clear the cache. We have written about this problem and how to solve it <a href="http://www.itoctopus.com/my-joomla-changes-are-not-showing" title="My Joomla Changes Are Not Showing!">here</a>.
</li>
<li>
<p><strong>You are updating the wrong article</strong>: Sometimes, you can be so focused on seeing immediate results on your website that it&#8217;s possible to oversee very obvious mistakes, such as updating the wrong article. This often happens when you have articles that have very similar titles, of if you&#8217;re updating an older version of the article.</p>
</li>
<li>
<p><strong>You are updating a category that has the same name</strong>: In Joomla 1.7 and up, categories and articles are often mixed up. Just make sure that you&#8217;re not updating a category that has the same name of your article.</li>
</ol>
<p>If you have cleared your cache and made sure that you are editing the right article, then you might have a different problem. Please <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll be more than happy to solve it for you. This work will take us a maximum of 1 hour and <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">our fees</a> are very reasonable!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/is-your-joomla-article-not-updating/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Install Joomla on GoDaddy</title>
		<link>http://www.itoctopus.com/how-to-install-joomla-on-godaddy</link>
		<comments>http://www.itoctopus.com/how-to-install-joomla-on-godaddy#comments</comments>
		<pubDate>Mon, 27 Feb 2012 18:29:14 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1416</guid>
		<description><![CDATA[A large percentage of our Joomla clients have their websites hosted with GoDaddy (GoDaddy is a very convenient hosting for many of our customers because this is where they bought their domains from), so we thought that writing a comprehensive and detailed post on how to manually install Joomla on a GoDaddy hosting would be [...]]]></description>
			<content:encoded><![CDATA[<p>A large percentage of our Joomla clients have their websites hosted with GoDaddy (GoDaddy is a very convenient hosting for many of our customers because this is where they bought their domains from), so we thought that writing a comprehensive and detailed post on how to <strong>manually</strong> install Joomla on a GoDaddy hosting would be beneficial for many people out there. Following is a step-by-step process, on how you can go about doing that.</p>
<p><a name="joomla-godaddy-step-0"></a><strong>Step 0: Download Joomla</strong></p>
<p>Although this is not part of the Joomla installation process on GoDaddy, you will need to download Joomla. You can do this by going to <em>http://www.joomla.org/download/</em> and download the Joomla zip file. You can download either Joomla 2.5.1 or Joomla 1.5.25 at the time of writing this article. In our example, we will choose to download and install Joomla 1.5.25 (Joomla 1.7 and Joomla 2.5.1 will not work on some GoDaddy servers, we have written an <a href="#why-joomla-2.5.1-will-not-work-on-godaddy">addendum</a> at the end of the article explaining why). The download should take about 10-15 seconds on a high speed connection. Take note of of the location of the newly downloaded file. By default, the newly downloaded file will be called <em>Joomla_1.5.25-stable-Full_Package.zip</em> and should be located in your <em>downloads</em> directory.</p>
<p><a name="joomla-godaddy-step-1"></a><strong>Step 1: Access Your Hosting Control Panel with GoDaddy</strong></p>
<p>The first thing that you need to do is to access your hosting control panel with GoDaddy. First you need to login, and then you need to launch the <em>Hosting Dashboard</em>:</p>
<ul>
<li>Login to your GoDaddy account by going to <em>www.godaddy.com</em> and filling in your username and password on the very top of the page.</p>
</li>
<li>
<p>Once Logged in, click on <em>My Account</em> (located on the far right of the upper menu, next to <em>Auctions</em>), then click on <em>Web Hosting</em> (located in the middle of the page), and then click on the green button that says &#8220;Launch&#8221;.</p>
</li>
<li>
<p>An alternative way of doing the above step is by hovering your mouse above <em>Hosting and Servers</em> on the top menu (next to <em>Domains</em>) and then clicking on <em>Hosting Management</em>, and then clicking on the green <em>Launch</em> button (which is located next to the Web Hosting account, and <u>not</u> next to <em>Domains</em>).</li>
</ul>
<p>Note that <strong>you can install Joomla automatically on GoDaddy</strong> by clicking on the Joomla icon under Application. But if you do this GoDaddy will create a random database name and will choose for you a Joomla version that you may or may not want.</p>
<p><a name="joomla-godaddy-step-2"></a><strong>Step 2: Create the Database</strong></p>
<p>Once you&#8217;re logged in to the <em>Hosting Dashboard</em>, the first thing that you need to do is to create the database, which can be done the following way:</p>
<ul>
<li>Click on <em>Databases</em> (<em>Databases</em> is located between <em>Content</em> and <em>Statistics</em>)
</li>
<li>
<p>Click on MySQL. This will take you to a page listing all your already created MySQL databases (if you have any). In this page,  you will be able to create a new database.</p>
</li>
<li>
<p>Click on <em>Create Database</em> on the top right. This will take you to the database creation form.</p>
</li>
<li>
<p>Now That you are redirected to the database creation form, you will need to fill in the first four fields (ignore the last 3):</p>
<ul>
<li><strong>Description</strong>: This is the description of the database. It should be something like <em>nameofyourjoomlawebsite</em>. For example, if your website&#8217;s URL is <em>mycheapbulbs.com</em>, then fill in <em>mycheapbulbs</em> in the description. As we will later discover, the database description is the same as the database name.
</li>
<li>
<p><strong>MySQL Database/User Name</strong>: This is the name of the user that will be accessing your database. For simplicity reasons, we advise you to make the username the same as your domain name. Assuming your domain name is <em>mycheapbulbs</em>, then choose <em>mycheapbulbs</em> as the username.</p>
</li>
<li>
<p><strong>New Password</strong>: This is the password of the user accessing your website.The password should consist of upper and lowercase characters and should contain numbers. Try to make the password 8-10 characters long. An example of a good password is: <em>x4Lo0iqbUY</em>.</p>
</li>
<li>
<p><strong>Confirm Password</strong>: This is a confirmation of the previous password. In this field, you need to re-enter the password that you have already entered above. In our example, it&#8217;ll be <em>x4Lo0iqbUY</em>.</li>
</ul>
</li>
<li>
<p>Once you have filled the first four fields, you will need to click on OK. You will be redirected to the previous page, and you will see your newly created database, and next to it you will see <em>Pending Setup</em> (under <em>Status</em>). Now you have to wait for a few minutes (GoDaddy seems to have a CRON job that runs every few minutes that creates all the databases). After a few minutes, you can refresh the page, and you will see that the <em>Status</em> has changed to <em>Setup</em>.</p>
</li>
<li>
<p><em>Setup</em> means that your database is already created. Make sure that you have stored, in a safe place, the password entered above. Now while you are on the page titled <em>MySQL</em> (where  you see the word <em>Setup</em> next to your database name), click on the pencil next to <em>Setup</em>. Clicking on the pencil will take you to a page where you&#8217;ll be able to find some important information about your database (that you will need later), which is the <em>Host Name</em> (which is something like <em>p44mysql112.secureserver.net</em>), the <em>Database Name</em> (which is the same as the database description), and the <em>User Name</em>. Copy and paste this information in the same place where you have already stored the password for this database. You will need this information during the installation of Joomla.</li>
</ul>
<p>We have now finished creating the database &#8211; the next step is to copy all the Joomla files to our hosting account on GoDaddy.</p>
<p><a name="joomla-godaddy-step-3"></a><strong>Step 3: Copy the Joomla Files</strong></p>
<p>Assuming that you have remained on the same page (where the information about the database is displayed), click on <em>Home</em> on the top left, and then follow the below guide (note that you can skip the first 2 steps if you have already created your domain):</p>
<ul>
<li>Click on <em>Domains</em> on the top center (next to <em>FTP File Manager</em>), and then click on <em>Add Domain</em> on the top right.
</li>
<li>
<p>In the popup window, click on <em>Bulk</em> (on the top), and then click on the name of your domain (which is <em>MYCHEAPBULBS.COM</em> in our example). The name of your domain should turn to blue once you click on it. Now click on the arrow pointing to the right, and then your domain should be displayed under <em>Domains to Add</em>. Under <em>folder</em>, you will need to enter your full domain name, so, in our example, we should enter <em>/mycheapbulbs.com</em> (Notice the necessary forward slash &#8220;/&#8221; at the beginning of the domain name). Now click on <em>OK</em> (the yellow button on the bottom right of the popup form). You will be redirected back to the page that lists all your domains, and the <em>Status</em> of the your newly added domain will be <em>Pending</em>. Wait a few minutes.</p>
</li>
<li>
<p>Refresh the page in a few minutes, and the <em>Status</em> should be changed to <em>Setup</em>. We are now ready to copy the Joomla files into our newly created domain.</p>
</li>
<li>
<p>Now click on <em>Home</em> on the top right and then click on <em>FTP File Manager</em>. This will take you to an interface where you can manipulate your files and upload files to your website.</p>
</li>
<li>
<p>Click on the name of your domain under <em>Filename</em>. In our example, we should click on <em>mycheapbulbs.com</em>. This will take us to an empty directory. Now we need to upload the Joomla folder there. </p>
<li>
<p>Click on the <em>Upload</em> button on the top menu (the <em>Upload</em> button is located just above <em>Refresh List</em>), and then click on <em>Browse</em>, and then choose the Joomla installation file that we have already downloaded in <a href="#joomla-godaddy-step-0">Step 0</a> above. Click on <em>Open</em> on the Windows popup browse menu, and then when you see the name of your Joomla zip file under <em>Upload File(s)</em> in the GoDaddy interface, click on <em>Upload</em>. The upload will take a minute or two depending on your Internet speed. You can see the progress of the upload on the middle right (below <em>Overwrite files</em>). Once the upload is finished, you will see the message <em>1 of 1 files completed</em>. We have now uploaded the Joomla zip file to our website, we now need to extract it. </p>
</li>
<li>
<p>Click on <em>Cancel</em> on the middle right of the screen (next to the yellow button <em>OK</em>) in order to hide the upload interface (we don&#8217;t need it anymore. Now click on the checkbox next to your Joomla zip file (which is <em>Joomla_1.5.25-Stable-Full_Package.zip</em> in our example), and then click on the <em>Unarchive</em> button on the top menu. Leave the destination as is and just click on <em>OK</em> (the yellow button on the middle right of the screen). Now wait a few seconds until the page refreshes and you should see all the Joomla folders (you will see the following folders: <em>administrator</em>, <em>cache</em>, <em>cli</em>, etc&#8230;). We have now finished copying the Joomla files on our GoDaddy hosting account. Our next step is to configure Joomla!</li>
</ul>
<p><a name="joomla-godaddy-step-4"></a><strong>Step 4: Configure Joomla</strong></p>
<p>Now we need to configure Joomla. Start by pointing your browser to <em>http://mycheapbulbs.com/</em> and follow the below:</p>
<ul>
<li>First choose the default language (for our example, we will choose <em>English (US)</em>), and then click on <em>Next</em> on the top right.
</li>
<li>
<p>Now the next page consists of a pre-installation check &#8211; the pre-installation check will check that you have the minimum server requirements and the necessary modules to install Joomla (PHP version higher than 4.3.10, zlib, xml, and MySQL are all supported, and the configuration.php is writable). All GoDaddy servers meet the minimum requirements for Joomla 1.5.25. Click on <em>Next</em> on the top right.</p>
</li>
<li>
<p>The next page consists of the Joomla license. Clicking on <em>Next</em> means that you have agreed to the license. (You will need to agree to the license in order to proceed with the installation)</p>
</li>
<li>
<p>Now in this page you need to enter the MySQL information that you have stored earlier in a safe file. First enter the host name (which is something like <em>p44mysql112.secureserver.net</em>), and then the database name, which is <em>mycheapbulbs</em> in our example, and then the password, and then the database name, which is also <em>mycheapbulbs</em> in our example. Once you&#8217;ve filled in all the information, click on <em>Next</em> on the top right. (If you see an error like <em>Unable to connect to the database:Could not connect to MySQL</em>, then you most likely have made a mistake somewhere. Click on <em>Previous</em> on the top left and re-enter the information.)</p>
</li>
<li>
<p>Now you&#8217;re taken to the <em>FTP Configuration</em> page, just click on <em>Next</em> on the top right. (You can set the FTP information later, and you don&#8217;t need it for the basic installation of Joomla).</p>
</li>
<li>
<p>Now you&#8217;re taken to the <em>Main Configuration</em> page &#8211; on this page you will need to enter the name of your website (<em>My Cheap Bulbs</em> in our example), you will also need to enter your email, and the password of the main super-administrator to your website. Click on <em>Next</em>. Do not install any sample data when you are prompted to.</p>
</li>
<li>
<p>Now go back to GoDaddy&#8217;s <em>FTP File Manager</em> and delete the installation directory (just click on the checkbox next to it and click on <em>Delete</em> on the top right and then click on <em>OK</em>.</p>
</li>
<li>
<p>Congratulations! You have finished installing Joomla on GoDaddy. You can now edit your website by going to <em>http://www.mycheapbulbs.com/administrator</em> and entering <em>admin</em> as username, and the password entered above as your password.</li>
</ul>
<p>We know that Joomla&#8217;s installation can be a daunting task &#8211; so if you&#8217;re having problems with installing Joomla on GoDaddy then please <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>. We are here to help and <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">our rates</a> are adequate for your budget!</p>
<p><a name="why-joomla-2.5.1-will-not-work-on-godaddy"></a><strong>Addendum: Why Your GoDaddy&#8217;s Hosting Is Not Compatible with Joomla 2.5.1 (or Joomla 1.7)</strong></p>
<p>If you try to install Joomla 2.5.1 on your GoDaddy hosting account, you may see the following error:</p>
<p><em>Parse error: syntax error, unexpected &#8216;=&#8217;, expecting &#8216;(&#8217; in /home/content/y/o/u/yourgodaddyusername/html/mycheapbulbs.com/includes/framework.php on line 42</em></p>
<p>In order to fix the above issue, you can go to the GoDaddy <em>FTP File Manager</em> and then click on the <em>includes</em> folder, and then click on the checkbox next to <em>framework.php</em>, and then click on <em>Edit</em> on the middle top menu. Once you&#8217;re in edit mode you should search for this line:</p>
<p><code>JError::$legacy = true;</code></p>
<p>and replace it with this line:</p>
<p><code>//JError::$legacy = true;</code></p>
<p>Click on the Save icon on the top left (it resembles a floppy disk), and then click on the close the file by clicking on the close icon on the top right.</p>
<p>Unfortunately, when you try to access the website right now, you will see yet another error that looks like this:</p>
<p><em>Parse error: syntax error, unexpected &#8216;=&#8217;, expecting &#8216;(&#8217; in /home/content/y/o/u/yourgodaddyusername/html/mycheapbulbs.com/installation/index.php on line 66</em></p>
<p>This means that there is another file that you need to fix. So open the <em>installation</em> folder, and then edit the <em>index.php</em> file,  Search for this line:</p>
<p><code>JError::$legacy = true;</code></p>
<p>and replace it with this line:</p>
<p><code>//JError::$legacy = true;</code></p>
<p>Now save the file and close it (the same way you saved and closed the <em>framework.php</em> file). Refresh your website and you will see this error: <em>Your host needs to use PHP 5.2.4 or higher to run Joomla 1.7.</em> Unfortunately, some hosting servers on GoDaddy run PHP Version 4.4.9. This is why Joomla 1.7 or Joomla 2.5.x will not work on GoDaddy, at least at the current time. GoDaddy&#8217;s PHP version for these servers is much lower than the minimum requirements. The solution to this problem is to tell GoDaddy to move you to a more recent server, or to move to another hosting company altogether.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-install-joomla-on-godaddy/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to Migrate Cookies Across Domains in Joomla</title>
		<link>http://www.itoctopus.com/how-to-migrate-cookies-across-domains-in-joomla</link>
		<comments>http://www.itoctopus.com/how-to-migrate-cookies-across-domains-in-joomla#comments</comments>
		<pubDate>Mon, 27 Feb 2012 02:39:52 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1501</guid>
		<description><![CDATA[Let&#8217;s say that you own two Joomla websites, and you want to unify the login for these sites &#8211; in other words, whenever someone is logged in to one site, then you want him to be automatically logged in to the other. The process of unifying login across multiple is called &#8220;cookie migration&#8221;, and is [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s say that you own two Joomla websites, and you want to <em>unify</em> the login for these sites &#8211; in other words, whenever someone is logged in to one site, then you want him to be automatically logged in to the other. The process of unifying login across multiple is called &#8220;cookie migration&#8221;, and is done by many large companies, such as Google, Yahoo, and others. Generally, companies do the cookie migration if they want their users to be logged in to a subdomain as well as to the main domain (for example, you might want your users to be automatically logged in to <em>store.yourjoomlawebsite.com</em> if they&#8217;re already logged in to <em>yourjoomlawebsite.com</em>) or if they want their users to be logged in to a regional website when they&#8217;re logged in to the main website (for example, you might want your users to be automatically logged in to <em>yourjoomlwebsiteusa.com</em> if they&#8217;re already logged in to <em>yourjoomlawebsite.com</em>).</p>
<p>Of course, for those with no-technical experience, the above might seem like a trivial task. But any programmer can tell you that the above is a daunting task! We did it ourselves several times and we can say that it&#8217;s not an easy task!</p>
<p>There are several methods to do the cookie migration across multiple domains, and each method has its pros and cons&#8230;</p>
<p><strong>Method #1: Pass a unique hash in the URL</strong></p>
<p>This method consists of passing a unique hash in the URL that will tell the server that this person is already logged in on the first domain, so you need to log him in on the second domain. The way to do this is by creating a field called hash in the <em>jos_session</em> table, setting the hash to a unique string (using <em>md5()</em> and <em>microtime()</em>), and then adding the hash to the URLs linking to the other site if the user is not already logged in there. When the user clicks on any URL pointing to the other site, then a hash-check is made, and the user will be automatically logged in on the other site (there will be a script that handles this login on the other website based on the hash).</p>
<p><u>Pros</u></p>
<ul>
<li>Easy to implement: This method will only take about 8 hours to implement.
</li>
<li>
<p>Easy to understand: The logic behind this method is very straightforward.</li>
</ul>
<p><u>Cons</u></p>
<ul>
<li>Both websites have to share the same server (if not the same database): At one point, the hash-based login script will need to check the table of the other website to see if that hash exists or not, and if the user is logged in or not. If the database of the first website is not accessible by the second website, then the check will fail, and the migration will not happen.
</li>
<li>
<p>Not very secure: The hash can be considered as a mixture of the username and password of the user in just one string. If that hash is stolen while the user is logged in (in one way or another), then the &#8220;cookie thief&#8221; will be able to login using the hash from another computer (without even knowing the username and password).</p>
</li>
<li>
<p>Not elegant: Imagine having 32 or 64 of meaningless characters in every URL of your website. We don&#8217;t think that&#8217;s very elegant!</li>
</ul>
<p><strong>Method #2: Use client-side and server-side code to set the cookie on the other website</strong></p>
<p>Since both websites are under your control, then you can use HTML/PHP code in order to set the cookie on your other Joomla website. So, the first time the person logs in to the first website, you can add the following code:</p>
<p><code>&lt;img src="http://www.yourotherjoomlawebsite.com/setcookie.php?cookie=same_cookie"&gt;</code></p>
<p>The above code calls the <em>setcoookie.php</em> file on your other website, this file will ensure that your other website is able to <em>share</em> the cookie with the first website. Again, this method has pros and cons&#8230;</p>
<p><u>Pros</u></p>
<ul>
<li>Elegant: This method is elegant as you don&#8217;t have to deal with ugly URLs and you don&#8217;t have to change links across the board on your website(s).
</li>
<li>
<p>Fast to deploy: Once the setcookie.php file is created, then you can deploy it on as many websites as you want, and they&#8217;ll be able to share the login. Adding the <em>setcookie.php</em> code (with the <em>img src=&#8230;</em>) can be easily done using a Jumi module.</li>
</ul>
<p><u>Cons</u></p>
<ul>
<li>Still the same problem with database accessibility: The database where the session information is stored must be accessible by all websites that want to share the same login. This means that it&#8217;ll be really hard to unify the login when the websites do not share the same database or worse, do no share the same server!</p>
</li>
<li>
<p>Might be open to security issues: Having a file that is responsible for setting cookies can open up a whole can of worms when it comes to website security &#8211; even if the file itself is very secure.</p>
</li>
<li>
<p>Might be blocked by the browser: Some browser settings will not allow PHP code from remote websites to be executed as part of the HTML.</li>
</ul>
<p><strong>Method #3 &#8211; Logging in the user to multiple websites at the same time</strong></p>
<p>This method is probably the best one, because it overcomes the database limitation. This method requires (similarly to the first method) editing a core Joomla file, which is <em>controller.php</em>, located under <em>/yourjoomlawebsite/components/com_user</em>. The programmer has to &#8220;post&#8221; the username and password to the other website(s) immediately after the following lines:</p>
<p><code>if(!JError::isError($error))<br />
{<br />
</code></p>
<p>So, whenever someone logs in to one website, he&#8217;s automatically logged in to all other websites, and then redirected back to the website he initially logged in from.</p>
<p><u>Pros</u></p>
<ul>
<li>By far the most elegant and efficient solution to unifying the login: This method doesn&#8217;t suffer from database limitations &#8211; the websites can be anywhere &#8211; the only thing that needs to be shared between these websites is the users tables (which can be synced in many ways &#8211; even if these websites reside on completely different servers). Additionally, the user is actually being logged in to all these sites (but the system is doing it for him behind the scenes) &#8211; there is no hack used to do this.</p>
</li>
<li>
<p>Simple concept: The concept of this method is simple, we are logging in the user to all the websites once he logs in to one.</li>
</ul>
<p><u>Cons</u></p>
<ul>
<li>The most complicated method of all: While it&#8217;s the most elegant method, it&#8217;s also the most complicated method. Let&#8217;s say that we have 3 websites that we need to automatically login the user to once he logs in to one of them. So, the user logs in to Website A, which posts the login information to Website B, which then posts the login information to Website C. But, what should Website C do? Should it post the login information again to Website B that should the same information (again) to Website C? When to stop? Obviously, this method if done carelessly can lead to an infinite redirection between sites &#8211; which will eventually crash the server(s).
</li>
<li>
<p>Requires the modification of core Joomla files: What if you want to upgrade your Joomla website? The modifications done on some of your core Joomla files may be overwritten by the upgrade, or, even worse, they may conflict with your upgrade.</p>
</li>
<li>
<p>It&#8217;s not really cookie migration: What we&#8217;re doing here is that we&#8217;re forcing login on every website (which may be a sub-domain or a totally different domain), we&#8217;re not migrating the cookies and we&#8217;re not even looking at the cookies.</p>
</li>
<li>
<p>Will only work if the users&#8217; data is identical: This method can only work when the users&#8217; data on all sites is identical. So this means that while this method works if the websites do not share the same database, it will not work at all if the users&#8217; usernames and passwords are not identical on all websites.</li>
</ul>
<p>Cookie migration across domains is one of the most delicate and complicated issues on the web, and not only Joomla. If you have multiple Joomla websites that you need to unify the login on, then we&#8217;re here to help. Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and let us prove to you how efficient, fast, and creative we are! (PS: Don&#8217;t worry about <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">our fees</a>, they are very reasonable!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-migrate-cookies-across-domains-in-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Are You Suddenly Seeing an Error on Every Page of Your Joomla Website?</title>
		<link>http://www.itoctopus.com/are-you-suddenly-seeing-an-error-on-every-page-of-your-joomla-website</link>
		<comments>http://www.itoctopus.com/are-you-suddenly-seeing-an-error-on-every-page-of-your-joomla-website#comments</comments>
		<pubDate>Sat, 25 Feb 2012 00:25:54 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1453</guid>
		<description><![CDATA[We just got a call from a new client. The client told us that he was suddenly seeing an error on every page of his Joomla website. The page still loads, but there is an error on every page that loads. It&#8217;s not the first time that we had such a call, and that&#8217;s why [...]]]></description>
			<content:encoded><![CDATA[<p>We just got a call from a new client. The client told us that he was suddenly seeing an error on every page of his Joomla website. The page still loads, but there is an error on every page that loads. It&#8217;s not the first time that we had such a call, and that&#8217;s why we decided to write a comprehensive post about this topic. So, what is the reason for this and how can this be fixed?</p>
<p>Well, there are two scenarios when you have this problem:</p>
<ol>
<li><strong>The error appears on every page, but the page still loads</strong></p>
<p>In this case, what you&#8217;re seeing is a warning or a notice, and not an error. The reasons for seeing warnings and notices are many, and they include (but are not limited to) the following:</p>
<ul>
<li><u>Header issues</u>: You are printing something (like an empty space) before the headers are sent to the browser &#8211; this causes a warning to be raised. Usually the cause of this is that there is a character (such as an empty space) that was wrongly inserted in one of your Joomla files.
</li>
<li>
<p><u>Session issues</u>: The Joomla engine is trying to retrieve/store non-necessary information from/to the <em>$_SESSION</em> array, but it&#8217;s unable to do so. </p>
<li>
<p><u>File issues</u>: You are including a file that doesn&#8217;t exist or that was already included using the <em>include</em> PHP function. The solution to this problem is by ensuring that you use <em>include_once</em> and you only include files that do exist.</p>
</li>
<li>
<p><u>Database issues</u>: There is an error in one of your SQL queries. This error however, is still tolerated by the Joomla engine and that&#8217;s why the page still loads (generally this is the case when the SQL error happens in one of the non-critical modules).</p>
</li>
<li>
<p><u>Missing argument(s)</u>: This warning happens when you are calling a function that requires <em>n</em> mandatory parameters, but you are passing less than <em>n</em> values to the function. For example, let&#8217;s say you have this following function:</p>
<p><code>function add(a, b){<br />
return a + b;<br />
}</code></p>
<p>A correct call of the function above is <em>add(2, 3);</em>. If you omit the second argument (3), then you will get the following warning: <em>Missing argument 2 for add()</em>.</p>
</li>
<li>
<p><u>Array warnings</u>: For example, a script on your Joomla website is trying to access an invalid element of an array (e.g. the array consists of 4 elements and your script is trying to access element #8), or is trying to use array functions on non-arrays. (such as using <em>array_merge</em> or <em>ksort</em>)</p>
</ul>
<p>All of the above are warnings and not notices. Notices, which are just information sent by PHP, generally do not indicate anything major on your website, and they are there just to <em>inform</em> you about something. Most of the notices on a Joomla website are about coding standards and deprecated functions. The default installation of the latest Joomla version (1.5.25, 1.7, or 2.5) does not raise any notices &#8211; so whenever you see a notice it&#8217;s because of some code that you have added to your website, or because of a badly written/old extension.</p>
<p>Notices and warnings can be suppressed by logging in to your Joomla control panel and then going to <em>Site</em> &#8211; <em>Global Configuration</em>, and then setting the <em>Error Reporting</em> field to <em>None</em>, and finally clicking on the <em>Save</em> button on the top left.</p>
</li>
<li>
<p><strong>The error appears on every page, and the rest of the page does not load</strong></p>
<p>In this situation, what are you are seeing is an actual error. The difference between warnings/notices and errors is that the latter will halt any progress of the page loading process. There are many errors that can happen on a Joomla website, and they are can be categorized into five types:</p>
<ol>
<li><u>Joomla Errors</u>: Joomla errors include the famous &#8220;<a href="http://www.itoctopus.com/invalid-token-on-joomla-login" title="Invalid Token">invalid token</a>&#8221; problem as well as the component not found error. Joomla errors are raised by the Joomla engine and are Joomla specific errors. Joomla errors indicate a misuse (or bad coding) of the Joomla extensions/templates/functionalities.
</li>
<li>
<p><u>PHP Errors</u>: PHP errors on a Joomla website are errors that have to do with the coding or with the environment. Common PHP errors include:</p>
<ul>
<li>Parse errors: Parse errors are errors that result usually from typos or missing (or extra) brackets, parenthesis, or semicolons. Parse errors are easily solved as the PHP parser will indicate exactly where they are (which file and which line).</p>
</li>
<li>
<p>Permission errors: Permission errors happen when Joomla is not able to read or write from/to a critical file because of wrong permissions. For example, Joomla needs to read the <em>configuration.php</em> file at all times, but if the permissions on that file are 222 (can only be written) then Joomla cannot read it.</p>
</li>
<li>
<p>Include errors: Include errors happen when PHP is trying to include a file, but that file does not exist or exists in another location than the one specified. Include errors happen when you use the <em>require</em> or the <em>require_once</em> functions instead of the <em>include</em> or <em>include_once</em> functions.</p>
</li>
<li>
<p>Memory errors: Memory errors mean that the script has exceeded the memory limitation set by the default PHP configuration. Memory errors are when you see something like <em>Fatal error: Allowed memory size of n bytes exhausted (tried to allocate m bytes)</em>. Memory errors can be easily solved by increasing the memory for the PHP instance either in the <em>php.ini</em>, or, more conveniently, by using the <em>ini_set</em> function. For example, placing <code>ini_set('memory_limit', '1024M');</code> in your <em>index.php</em> file will increase the memory allocated for your Joomla website to 1 GB (1024 MB).</p>
</li>
<li>
<p>Execution time exceeded errors: These errors happen when the page just takes so much time to be executed on the server before sending it to the client. Most hosting companies set the maximum execution time to around 30 seconds. If the page does not get executed within the maximum execution time, then the page will display the following error: <em>Fatal error: Maximum execution time of n seconds exceeded</em>. Again, this error can be addressed by increasing the maximum execution time in <em>php.ini</em> or by adding the following code to the top of your <em>index.php</em> file:</p>
<p><code>ini_set("max_execution_time", "600");</code></p>
<p>The above code changes the maximum execution time of the script to 10 minutes (600 seconds) &#8211; which should be more than enough for any PHP script out there!</p>
</li>
<li>
<p>Usage in wrong context errors: For example, you are trying to use an object as a string or as an array.</p>
</li>
<li>
<p>Object errors: For example, you are trying to access a static method as non-static or vice versa. In this case, you will see the following error: <em>Fatal error: Cannot make non static method [functionname] static in class [classname] in /home/yourjoomlawebsite.com/public_html/modules/modulename/classname.php on line n</em>. Another object error is when you&#8217;re trying to invoke a method on a non-object (in this case you will see: <em>Fatal error: Call to a member function on a non-object</em>)</p>
</li>
<li>
<p>Other fatal PHP errors include: Re-declaring functions/classes (you will see something like <em>Cannot re-declare function&#8230;</em> or <em>Cannot re-declare class</em>), division by zero errors, redefining constants, etc&#8230;</li>
</ul>
</li>
<li>
<p><u>Database Errors</u></p>
<p>Some (not all) database errors can crash your whole website, causing a &#8220;fatal error&#8221; to show on every single page. Common database errors include:</p>
<ul>
<li>Connection errors: Connection errors happen when the Joomla website cannot connect to the database at all. Connection errors usually happen because of one (or more) of the following:
<ul>
<li>
<p>The link between Joomla and the database is lost. This often happens when the Joomla website (e.g. PHP code) is on one server, and the database is on another server, and the connection between the two servers cannot be established for one reason or the other.</p>
</li>
<li>
<p>The username and/or password to the database is wrong. This happens when the supplied username and/or password in the <em>configuration.php</em> do not match the correct username and/or password for that particular database.</p>
</li>
<li>
<p>The database doesn&#8217;t exist. This often happens because of a typo in the database name, or when moving the Joomla website from one server to another, where the name of the database is different.</li>
</ul>
<p>Usually, when there is a connection error, you will see the following error message on every page of your Joomla website: <em>Database Error: Unable to connect to the database: Could not connect to MySQL</em>.</p>
</li>
<li>
<p>SQL errors: These errors happen because of a wrong query statement. Of course, we have already listed SQL errors as warnings above and we stated that they don&#8217;t break the website. However, there are some queries on your Joomla website that are critical to the website as a whole, and if they are wrong, they can definitely break it. Site breaking queries include System plugins queries &#8211; such queries can render the whole website inoperable if wrong as they run on every page!</li>
</ul>
</li>
<li>
<p><u>.htaccess errors</u>: The <em>.htaccess</em> file located in the root directory of your Joomla website is a very delicate file. If you make a mistake anywhere on this file there is a high chance that your whole website will go down &#8211; displaying the much dreaded &#8220;Internal Server Error&#8221; message.</p>
<li>
<p><u>Internal Server Errors</u>: These errors can be any of the errors mentioned above, it&#8217;s just there&#8217;s a way to program Joomla to throw a &#8220;500 &#8211; Internal Server Error&#8221; whenever a fatal error occurs. You will need to turn debugging on in order to know what the actual error is. Note that often, an internal server error means that there&#8217;s something wrong with your .htaccess file and it relates to Joomla&#8217;s SEF or sh404. Disable the aforementioned extensions and see if this resolves the problem.</li>
</ul>
</li>
</ul>
<p>If you are seeing an error on every page of your Joomla website and are unable to fix the problem then why don&#8217;t you <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>? We are fast, we are friendly, we can definitely help you, and <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">our fees</a> are very reasonable!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/are-you-suddenly-seeing-an-error-on-every-page-of-your-joomla-website/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Import a CSV File Into VirtueMart?</title>
		<link>http://www.itoctopus.com/how-to-import-a-csv-file-into-virtuemart</link>
		<comments>http://www.itoctopus.com/how-to-import-a-csv-file-into-virtuemart#comments</comments>
		<pubDate>Wed, 22 Feb 2012 18:57:58 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1428</guid>
		<description><![CDATA[Every week, we get about 2 requests from customers asking us to import their products&#8217; database (in a CSV format) into VirtueMart on their Joomla website. Usually, every customer has the following 4 columns (fields) in his CSV file:

Product Name
Product Description
Product Price
Product Category

The remaining columns differ based on the customer&#8217;s business. But usually, the above [...]]]></description>
			<content:encoded><![CDATA[<p>Every week, we get about 2 requests from customers asking us to import their products&#8217; database (in a CSV format) into VirtueMart on their Joomla website. Usually, every customer has the following 4 columns (fields) in his CSV file:</p>
<ul>
<li>Product Name</li>
<li>Product Description</li>
<li>Product Price</li>
<li>Product Category</li>
</ul>
<p>The remaining columns differ based on the customer&#8217;s business. But usually, the above 4 columns are pretty much standard. Almost every customer tells us the same story: He created a CSV file containing all his products, he installed a Joomla Extension called <em>CSVI VirtueMart</em> (CSVI stands for &#8220;Comma Separated Values Improved&#8221;), and he tried to import the CSV into his VirtueMart database tables by using the aforementioned extension. In many cases, not only the import did not work, but it also corrupted the VirtueMart tables (which means that the user had to revert from a previous backup to fix the affected tables).</p>
<p>The problem is that <em>CSVI VirtueMart</em> is made with the programmer in mind, and it also expects the following for the import to be successful:</p>
<ul>
<li>Columns to be in specific positions inside the CSV file</li>
<li>Data is escaped properly</li>
<li>CSV file is an actual file, and not an Excel file</li>
</ul>
<p>In addition to the above, <em>CSVI VirtueMart</em>&#8217;s import functionality is very poor, as it&#8217;s unable to import advanced data such as custom fields. (size, options, etc&#8230;) Not to mention that it&#8217;s also unable to import nested categories and product images. All in all, using <em>CSVI VirtueMart</em> to import the data for your products can be a very painful process and it might just take you days to do the import properly (that is if you don&#8217;t run into issues where <em>CSVI VirtueMart</em> completely corrupts your existing VirtueMart data). We think that <em>CSVI VirtueMart</em> did a great job simplifying the process, but the import functionality is still not stable and can be potentially dangerous to your data and your website.</p>
<p>So, what is the solution? Well, the solution to importing a CSV file into VirtueMart is either developing a PHP script yourself that will do this or hiring a <a href="http://www.itoctopus.com/the-joomla-experts" title="The Joomla Experts">Joomla Expert</a> in order to do this for you.</p>
<p>In essence, here&#8217;s what you or the Joomla expert should do:</p>
<ul>
<li>Create a PHP file that will read the CSV file using the function <em>fgetcsv</em></li>
<li>Loop through the array resulting from reading your CSV file and insert the data into the appropriate VirtueMart tables</li>
<li>That&#8217;s it!</li>
</ul>
<p>Doing the above is not an easy task (although it seems like it is). This is because you need to ensure that your data is read properly and inserted properly into the appropriate tables. What if you have a product that belongs to multiple categories? What if you have a product with one or more attributes? (such as T-Shirt size or T-Shirt color) What if you have a product with a complex discount structure? </p>
<p>Of course, the process can be more complicated if you want to import images as well. The easiest (yet still complicated) way of doing this is to create another PHP script that will import a zip file which contains the images of your products where each image is named after a product. For example, if you have a product called &#8220;White Teddy Bear&#8221;, then the associated image should be named &#8220;white-teddy-bear.jpg&#8221;. This will ensure that the script is able to associate the image with the product. So, in short, the script should extract the zip file to a temporary directory, intelligently associate the images with their respective products, and finally move the images to the right folder that contains the images of all the VirtueMart products. Needless to say, importing the images should happen after importing the products.</p>
<p>As you can see from the above, the concept is not that hard, but the application can be quite challenging, especially when you have lots of products, your products&#8217; data is not consistent, and your products have images with names resembling, but not identical, to the names of the products. A Joomla expert can take 1 to 2 days creating the import script(s) and testing them &#8211; depending on your data and your requirements.</p>
<p>If you need help importing a CSV file into VirtueMart, then look no further: We are very experienced in Joomla and we are always ready and eager to help you. Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll take it from there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-import-a-csv-file-into-virtuemart/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing the Login Twice and the Logout Twice Problem on Your Joomla Frontend</title>
		<link>http://www.itoctopus.com/fixing-the-login-twice-and-the-logout-twice-problem-on-your-joomla-frontend</link>
		<comments>http://www.itoctopus.com/fixing-the-login-twice-and-the-logout-twice-problem-on-your-joomla-frontend#comments</comments>
		<pubDate>Tue, 21 Feb 2012 15:16:43 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1422</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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)</p>
<p>When we started working on the website, we didn&#8217;t know what the problem is. We checked the login extension (module and component) to see if there&#8217;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 &#8211; the only non-standard thing that we saw was a redirect happening on a login to a 3<em>rd</em> 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.</p>
<p>We then wanted to see if the username and password are actually <em>posted</em> (stored in <em>$_POST</em>) the first time the user tries to login, and they were&#8230;</p>
<p>Our next step was to examine the <em>$_SESSION</em> array to see if it&#8217;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) &#8211; but was always clearing the information from the second time the user clicked on the logout button.</p>
<p>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 <em>http://www.ourcusomterjoomlawebsite/</em> to <em>http://ourcustomerjoomlawebsite</em>. That was the problem! That small non-standard script that we mentioned earlier was redirecting to a 3<sup>rd</sup> party website on login and then redirecting back to the website &#8211; but it was redirecting to the wrong link. Our client had hacked the <em>controller.php</em> file located under <em>ourcustomerjoomlawebsite/components/com_user/</em> by adding the following lines after <code>$error = $mainframe->login($credentials, $options);</code> by adding the following code:</p>
<p><code>$redirect_url = urlencode('http://ourcusomterjoomlawebsite/');<br />
$authentication = $thirdPartyOject->getAuthentication();<br />
$return = 'http://3rdpartywebsite/?authentication='.$authentication.'&#038;redirect_url='.urlencode($redirect_url);</code></p>
<p>So, his Joomla website was redirecting to a 3<em>rd</em> party website and then redirecting back to his Joomla website, but without the <em>www</em>. So, if registered users used <em>http://www.ourcusomterjoomlawebsite/</em> to login to his website, they were redirected back to <em>http://ourcusomterjoomlawebsite/</em> and that&#8217;s why they looked as logged out. If they tried to login from <em>http://ourcusomterjoomlawebsite/</em> 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&#8217;s logged in to the non-www version, that&#8217;s why some large websites do something called &#8220;cookie migration&#8221; to prevent this problem from happening with their users).</p>
<p>A similar script was found on the logout action.</p>
<p>To solve the login problem, we changed the above code to:</p>
<p><code>$redirect_url = urlencode('http://'. $_SERVER['HTTP_HOST'];);<br />
$return = 'http://3rdpartywebsite/?remote_auth_token='.$remote_auth_login_token.'&#038;redirect_url='.urlencode($redirect_url);</code></p>
<p>By using $_SERVER['HTTP_HOST'], we ensured that the 3<em>rd</em> party website always redirected to the same website. We did the same thing on the logout script and that solved the problem!</p>
<p>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&#8217;s why we&#8217;re here for! Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll be more than glad to help you. You don&#8217;t worry about <a href="http://www.itoctopus.com/fees" title="Our fees">our fees</a>, they&#8217;re very reasonable!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/fixing-the-login-twice-and-the-logout-twice-problem-on-your-joomla-frontend/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SendMail Problems with Joomla</title>
		<link>http://www.itoctopus.com/sendmail-problems-with-joomla</link>
		<comments>http://www.itoctopus.com/sendmail-problems-with-joomla#comments</comments>
		<pubDate>Wed, 15 Feb 2012 00:15:02 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1405</guid>
		<description><![CDATA[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 &#8220;PHP Mailer&#8221; as Mailer and [...]]]></description>
			<content:encoded><![CDATA[<p>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 &#8220;PHP Mailer&#8221; as Mailer and his sendmail path was set to <em>/usr/sbin/sendmail</em>. Odd!</p>
<p>We then thought that he didn&#8217;t have <em>sendmail</em> installed so we checked on his server and it was indeed, installed. Sendmail did exist under <em>/usr/sbin</em>.</p>
<p>Our next step was to see if it&#8217;s a Joomla problem or not, so we created a small test script called <em>test.php</em> on the root directory of the website. The file contained the following code:</p>
<pre><code>&lt;?php
$to    = '<em>ouremail</em>';
$subject= 'Email Subject';
$body    = 'This is the body of the email';
$headers='From: <em>ouremail</em>' . "\r\n" .
'Reply-To: <em>ouremail</em>' . "\r\n" .
'X-Mailer: itoctopus!';
$mail_sent = mail($to, $subject, $body, $headers);
if ($mail_sent)
	echo('Email sent');
else
	echo('Email not sent');
?&gt;</code></pre>
<p>The example above is just a simple script to send an email to ourselves. The script just prints <em>Email sent</em> in case the email was successfully sent, and <em>Email not sent</em> in case the email wasn&#8217;t successfully sent. To our surprise, the script printed <em>Email sent</em>, so the email was actually sent, but how come we received nothing? This case was becoming more curious.</p>
<p>Our next step was to check the mail log, by typing the below (when connected through SSH):</p>
<p><code>tail /var/log/mail.log</code></p>
<p>We saw a curious error in the above log that looked like the below:</p>
<p><code>Feb 14 21:28:36 joomla16 postfix/smtp[19374]: 30F574182B: to=<em>ouremail</em>, 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))</code></p>
<p>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 <em>spammy</em> looking hostname (the <em>Invalid HELO name</em>). So, the key to solving the problem lies in the configuration file for <em>Postfix</em>.</p>
<p>Here&#8217;s what we did:</p>
<ul>
<li>We opened the file <em>/etc/postfix/main.cf</em> (which is the main configuration file for <em>Postfix</em>).</li>
<li>We located this line: <code>myhostname = localhost</code> (this should be the 30<sup>th</sup> line in the <em>main.cf</em> configuration file).</li>
<li>We changed it to <code>myhostname = ourclientjoomlawebsite.com</code>.</li>
</ul>
<p>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!</p>
<p>In case you have problems with mail on your Joomla website, then we&#8217;ll be happy to help you (all you need to do is to <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>!). The work shouldn&#8217;t take us that much time and <a href="http://www.itoctopus.com/fees" title="Our reasonable fees!">it won&#8217;t cost you much</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/sendmail-problems-with-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSForm Not Working on Your Joomla Website?</title>
		<link>http://www.itoctopus.com/rsform-not-working-on-your-joomla-website</link>
		<comments>http://www.itoctopus.com/rsform-not-working-on-your-joomla-website#comments</comments>
		<pubDate>Thu, 09 Feb 2012 14:55:37 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1400</guid>
		<description><![CDATA[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 &#8220;fixes&#8221; revolve around an RSForm Form, that doesn&#8217;t work. The form seems to submit, but then redirects back to itself (instead [...]]]></description>
			<content:encoded><![CDATA[<p>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 &#8220;fixes&#8221; revolve around an RSForm Form, that doesn&#8217;t work. The form seems to submit, but then redirects back to itself (instead of going to specified <em>thank you</em> page), without populating the database, and without sending the necessary emails.</p>
<p>After analyzing the problem, we have discovered that it&#8217;s related to 3 issues:</p>
<ol>
<li>Caching</li>
<li>SEF</li>
<li>Captchas</li>
</ol>
<p>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&#8230;) that we can do better!</p>
<p>After a lot of analysis, we discovered that the problem lies in the <em>System Cache</em> 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 <em>System Cache</em> plugin. Here&#8217;s what we did:</p>
<ul>
<li>We opened the file <em>cache.php</em>, which is located under <em>/yourjoomlawebsite/plugins/system</em>.</li>
<li>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 <em>$_SERVER['REQUEST_URI']</em> to check for the page name).</li>
<li>We saved the file and we uploaded it back.</li>
<li>The RSForm still didn&#8217;t work!</li>
</ul>
<p>Odd!</p>
<p>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&#8217;t work?</p>
<p>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!)</p>
<p>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: &#8220;No matter what you do, there will be a day when cache and SEF are going to bite you!&#8221;</p>
<p>If you have an RSForm that doesn&#8217;t work, and if you need help doing the above or if doing the above doesn&#8217;t work for you, then feel free to <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>, we&#8217;re here to help! We&#8217;ll do the job in record time and <a href="http://www.itoctopus.com/fees" title="Our fees">our rates</a> are very fair!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/rsform-not-working-on-your-joomla-website/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unable to Edit the CSS File in Joomla?</title>
		<link>http://www.itoctopus.com/unable-to-edit-css-file-in-joomla</link>
		<comments>http://www.itoctopus.com/unable-to-edit-css-file-in-joomla#comments</comments>
		<pubDate>Mon, 06 Feb 2012 17:33:59 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1306</guid>
		<description><![CDATA[Occasionally, one of our (potential) clients calls us and tells that he&#8217;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&#8217;s not even able to see the [...]]]></description>
			<content:encoded><![CDATA[<p>Occasionally, one of our (potential) clients calls us and tells that he&#8217;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 <em>Template Manager</em> section so he&#8217;s not even able to see the CSS file. In other cases, the client is able to see the <em>Template Manager</em> section, and is able to view the CSS file of a particular template, but he&#8217;s not able to save the CSS.</p>
<p>Usually in the first case, when the person is not even able to see the <em>Template Manager</em> 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 <a href="http://www.itoctopus.com/how-to-create-a-super-administrator-user-on-joomla" title="How to Create a Super Administrator User on Joomla?">creating another super administrator user</a> on the website and giving that person the username and password of the newly created user.</p>
<p>In the second situation (where the user is attempting to save his edits to the CSS file of the Joomla website and he&#8217;s getting an error message) it&#8217;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&#8217;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 <em>/yourjoomlawebsite.com/templates/yourtemplatename/css/template.css</em>, 3) right click on the file and change the permissions by setting them to <code>-rw-r--r--</code> (644) or, if this doesn&#8217;t work, then change the permissions to <code>-rw-rw-rw-</code>.</p>
<p>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&#8217;t reflected on your website)? Then, you might have one of the following problems:</p>
<ul>
<li>Your browser is caching the previous CSS. Clear your browser cache and see if that solves the problem.</li>
<li>You are trying to change the wrong CSS file for the wrong template.</li>
<li>You are trying to change the right CSS file for the right template, but you&#8217;re changing the wrong CSS class.</li>
<li>You&#8217;re changing the right CSS class, but there is another CSS class in another <em>supporting</em> CSS file (such as <em>red.css</em>) that overrides the CSS class you&#8217;re trying to change.</li>
</ul>
<p>If you&#8217;re still having problems with your CSS file on your Joomla template, then feel free to <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> &#8211; we&#8217;ll definitely help you. Oh and don&#8217;t worry about <a href="http://www.itoctopus.com/fees" title="Our fees!">our fees</a>, they are very cheap!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/unable-to-edit-css-file-in-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is It Worth It to Upgrade to Joomla 2.5?</title>
		<link>http://www.itoctopus.com/is-it-worth-it-to-upgrade-to-joomla-2-5</link>
		<comments>http://www.itoctopus.com/is-it-worth-it-to-upgrade-to-joomla-2-5#comments</comments>
		<pubDate>Fri, 03 Feb 2012 18:25:54 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1360</guid>
		<description><![CDATA[Every since Joomla 2.5 was released last week, customers have been asking us this question: &#8220;Is it worth it to upgrade to Joomla 2.5?&#8221; That&#8217;s a very legitimate question. Our answer to this question is always like this: &#8220;It&#8217;s worth it as there are some features that are in Joomla 2.5 that do not exist [...]]]></description>
			<content:encoded><![CDATA[<p>Every since Joomla 2.5 was released last week, customers have been asking us this question: &#8220;Is it worth it to upgrade to Joomla 2.5?&#8221; That&#8217;s a very legitimate question. Our answer to this question is always like this: &#8220;It&#8217;s worth it as there are some features that are in Joomla 2.5 that do not exist in previous categories, but what&#8217;s the rush?&#8221;</p>
<p>The thing is we don&#8217;t think it&#8217;s <em>pressing</em> for people to adopt Joomla 2.5, and we have 4 reasons why:</p>
<ol>
<li>Joomla 2.5 is very new (it&#8217;s only 9 days old at the time of writing this post) and it&#8217;s not tested very well by the community yet. It&#8217;s better to wait for more sites to have it installed and wait until all the bugs are fixed.
</li>
<li>
<p>Many extensions still don&#8217;t support Joomla 2.5, so you&#8217;ll have the latest Joomla version, but you won&#8217;t have any templates or extensions that are compatible with it, and it&#8217;ll be very hard and costly to migrate your templates and extensions to the latest version of Joomla.</p>
</li>
<li>
<p>Joomla&#8217;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&#8217;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.</p>
</li>
<li>
<p>The upgrade from Joomla 1.5 to Joomla 2.5 is a painful, <em>very</em> painful process. Most likely in the future the Joomla people will develop a simpler process to do the upgrade.</li>
</ol>
<p>Unfortunately, we think that Joomla didn&#8217;t do well with the latest Joomla releases (Joomla 1.6 and Joomla 1.7), and that&#8217;s why at itoctopus, we don&#8217;t trust the latest version as of yet. We&#8217;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&#8217;ll be positive).</p>
<p>If you really want to upgrade to Joomla 2.5 then we can help you do this. Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll be very happy to serve you! (We&#8217;re the friendliest Joomla experts out there!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/is-it-worth-it-to-upgrade-to-joomla-2-5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Which Joomla File Is the Database?</title>
		<link>http://www.itoctopus.com/which-joomla-file-is-the-database</link>
		<comments>http://www.itoctopus.com/which-joomla-file-is-the-database#comments</comments>
		<pubDate>Thu, 02 Feb 2012 15:06:26 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1329</guid>
		<description><![CDATA[Every other week or so, we get a call from a (potential) client that goes like this:
Client: &#8220;Hi!&#8221;
Us: &#8220;Hi!&#8221;http://www.itoctopus.com/wp-admin/post.php?action=edit&#038;post=1329&#038;message=1
Client: &#8220;I would like to make some edits to my database, and I want to know which Joomla file is the database.&#8221;
Us: &#8220;Well sir, the database is not stored in any Joomla file, the database is (usually) [...]]]></description>
			<content:encoded><![CDATA[<p>Every other week or so, we get a call from a (potential) client that goes like this:</p>
<p>Client: &#8220;Hi!&#8221;<br />
Us: &#8220;Hi!&#8221;http://www.itoctopus.com/wp-admin/post.php?action=edit&#038;post=1329&#038;message=1<br />
Client: &#8220;I would like to make some edits to my database, and I want to know which Joomla file is the database.&#8221;<br />
Us: &#8220;Well sir, the database is not stored in any Joomla file, the database is (usually) MySQL database &#8211; Joomla just connects to this database.&#8221;</p>
<p>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.</p>
<p><strong>Where is the Joomla database?</strong></p>
<p>The Joomla database exists on usually a MySQL server, the name of the database is declared in your <em>configuration.php</em> file. In order to view your Joomla database, you will need to do the following:</p>
<ul>
<li>Login to your <em>cPanel</em> account.</li>
<li>Go to your <em>phpMyAdmin</em> in cPanel (there should be a <em>phpMyAdmin</em> icon somewhere in the middle of your <em>cPanel</em> home screen).</li>
<li>Locate the name of your database (which is declared in the <em>$db</em> variable in your <em>configuration.php</em> file) and click on it (in <em>phpMyAdmin</em>).</li>
<li>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 <em>jos_content</em>, and your users are stored in <em>jos_users</em>.</li>
</ul>
<p><strong>What are the two main files that are used to connect to your Joomla database?</strong></p>
<p>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:</p>
<ol>
<li><strong>configuration.php</strong>: This file is located under the root directory of your Joomla website. It contains the connection parameters to your database, specifically:
<ul>
<li><u>The type of the database</u>: The type of the database is usually <em>mysql</em>, and it is stored in the <em>$db_type</em> variable.</li>
<li><u>The name of the database</u>: This is the name of the database storing the data for your Joomla website. The database name is stored in the <em>$db</em> variable.</li>
<li><u>The table prefix</u>: 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 <em>jos_</em>, that&#8217;s why in the Joomla database, you have tables such as <em>jos_categories</em> instead of just <em>categories</em>. The table prefix is defined by the <em>$table_prefix</em> variable. The table prefix is useful in case you have multiple websites powered by the same database (and you don&#8217;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 <a href="http://www.itoctopus.com/10-security-tips-for-your-joomla-website" title="10 Security Tips for Your Joomla Website">10 Security Tips for Your Joomla Website</a>).</li>
<li><u>The database user</u>: The username that is used to connect to your Joomla database. It is stored in the <em>$user</em> variable.</li>
<li><u>The user&#8217;s password</u>: This is the password of the user above. It is stored in the <em>$password</em> variable.</li>
</ul>
<p>Now, we have all the connection parameters to the database, but how do we connect to the database and get data? Well, that&#8217;s the job of <em>database.php</em>!</p>
</li>
<li>
<p><strong>database.php</strong>: This file is located under this folder: <em>/yourjoomlawebsite/libraries/joomla/database/</em>, and it is responsible for connecting to the database (by using the connection parameters in <em>configuration.php</em>), getting data from your database, and inserting/modifying/deleting data in your database.</p>
<p>The <em>database.php</em> file contains a class called <em>JDatabase</em> that contains all the methods needed to interact with your database. Note that you should never change the <em>database.php</em> file. Doing so may leave your website non-operational.</li>
</ol>
<p>If you have problems with your Joomla database and you need help, then that why we&#8217;re here for! Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll do our best to help you! We&#8217;re also very fun to work with!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/which-joomla-file-is-the-database/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>25 Joomla Important Tips</title>
		<link>http://www.itoctopus.com/25-joomla-important-tips</link>
		<comments>http://www.itoctopus.com/25-joomla-important-tips#comments</comments>
		<pubDate>Wed, 01 Feb 2012 18:23:50 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1328</guid>
		<description><![CDATA[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:

Security tips
Performance tips
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 [...]]]></description>
			<content:encoded><![CDATA[<p>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:</p>
<ol>
<li>Security tips</li>
<li>Performance tips</li>
<li>General tips</li>
</ol>
<p><strong>Important security tips for Joomla</strong></p>
<p>We have discussed before <a href="http://www.itoctopus.com/10-security-tips-for-your-joomla-website" title="10 Security Tips for Your Joomla Website">10 security tips for your Joomla website</a>. We will re-discuss them concisely (and a bit differently) in this section&#8230;</p>
<ol>
<li><strong>Always have the latest Joomla version for your website</strong>: 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&#8217;t <em>jump</em> to adopt the latest released version &#8211; wait a few months until others test it.</p>
</li>
<li>
<p><strong>Ensure your Joomla version is not available to the world to see</strong>: 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.</p>
</li>
<li>
<p><strong>Do not install extensions that don&#8217;t look trustworthy</strong>: Only install high-rated extensions by reputable developers. Note that paid extensions are not necessarily safer or more robust than free extensions.</p>
</li>
<li>
<p><strong>Always update your Joomla extensions to the latest version</strong>: 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.</p>
</li>
<li>
<p><strong>Don&#8217;t rely on Joomla&#8217;s built-in security &#8211; install security extensions</strong>: There are many reliable security extensions for Joomla. Choose one and install it (just ensure that the one you&#8217;re about to install doesn&#8217;t conflict with the functionality of your website).</p>
</li>
<li>
<p><strong>Change the defaults in your configuration.php file</strong>: The <em>configuration.php</em> file in your Joomla website&#8217;s root directory has many default values that should be changed, including the following: <em>$secret</em> and <em>$dbprefix</em> (the latter is also referred to as the <em>table alias</em>).</p>
</li>
<li>
<p><strong>Give only write permissions to files/directories that need to be written by the outside world</strong>: 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).</p>
</li>
<li>
<p><strong>Your passwords shouldn&#8217;t be the same forever</strong>: Most hacked websites suffer from a common problem &#8211; the passwords of these websites (and the services related to these websites such as MySQL, FTP, etc&#8230;) are never changed. Change your passwords often, and make sure that your passwords are strong!</p>
</li>
<li>
<p><strong>Block malicious code from being uploaded to your website</strong>: 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).</p>
</li>
<li>
<p><strong>Check your website by running 3<sup>rd</sup> party scans</strong>: There are many tools available on the Internet that will scan your website for security issues.</p>
</li>
<li>
<p><strong>Ensure that your environment is clean</strong>: 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&#8217;s your main business).</p>
</li>
<li>
<p><strong>Read the logs</strong>: Your website logs are created for a reason &#8211; so that someone can read them. Check the logs to see any suspicious activities on your website.</li>
</ol>
<p><strong>Important performance tips for Joomla</strong></p>
<p>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:</p>
<ol start="13">
<li><strong>Ensure that all the tables are optimized</strong>: 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&#8217;t need to be an integer, it can be a boolean), and that fields that are used in search queries are indexed.
</li>
<li>
<p><strong>Check your slow query log</strong>: The slow query log can reveal serious bottlenecks that are chocking your website. By checking your slow query log you&#8217;ll be able to determine which queries are slowing down your whole website. <a href="http://www.itoctopus.com/why-is-joomla-so-slow#comment-4697">This comment</a> on one of our previous posts states that the person had a query that was taking 30 minutes to be executed &#8211; we&#8217;re sure that he used the slow query log to find that query.</p>
</li>
<li>
<p><strong>Clean your Joomla website directory</strong>: Your Joomla website directory should only contain Joomla core files, configuration files, extensions, and user uploaded data. It shouldn&#8217;t contain test files or test directories (or even backup files). Ensure that this directory is always clean.</p>
</li>
<li>
<p><strong>Clean your database</strong>: 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&#8217;s a very tedious job. But it can do miracles to your website&#8217;s performance).</p>
</li>
<li>
<p><strong>Completely uninstall extensions that you&#8217;re not using</strong>: You&#8217;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). </p>
</li>
<li>
<p><strong>Optimize Joomla&#8217;s core code</strong>: Joomla&#8217;s code is very generic and it&#8217;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&#8217;s core code to fit your own needs, as well as the extensions that you&#8217;re using. However, it is important to know that once you tweak Joomla&#8217;s core code, it&#8217;ll be impossible for you to move to another Joomla version smoothly. You will need to <em>hack</em> the Joomla version that you&#8217;re moving to as well&#8230; In addition to that, you will need to have some very good programming skills in order to tweak Joomla&#8217;s core.</p>
</li>
<li>
<p><strong>Optimize your template</strong>: From our experience, Joomla templates (whether paid or not) are usually not very optimized. This is because they&#8217;re written by non-programmers or by <em>weak</em> programmers. Optimizing your Joomla template usually optimizes the performance of your Joomla website.</li>
</ol>
<p><strong>Important general tips for Joomla</strong></p>
<p>Here are some general Joomla tips that will just make your Joomla website better and more versatile.</p>
<ol start="20">
<li><strong>Read the documentation that comes with your Joomla template</strong>: Almost every (complicated) Joomla template comes with documentation on how to install it. For some reason, most Joomla administrators don&#8217;t read it, and that&#8217;s why the <a href="http://www.itoctopus.com/joomla-template-is-not-working" title="Joomla Template Is Not Working!">template doesn&#8217;t work</a>. Reading the instructions that came with the template will save you a lot of time and headache later on.
</li>
<li>
<p><strong>Check extensions for &#8220;free&#8221; links</strong>: Some developers, even those developing paid extensions, think that they are entitled to place a &#8220;free&#8221; 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 &#8220;bad neighborhood&#8221; sites are linking to the developer&#8217;s website (which tends to be the case almost all the time). Check the code of these extensions in order to remove these links.</p>
</li>
<li>
<p><strong>Ensure polymorphic paths are used</strong>: Some extensions use only <em>http</em> 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 <em>https</em> under <em>https</em> mode, and to <em>http</em> under <em>http</em> mode. Note that the use of non-polymorphic paths is the main cause of <a href="http://www.itoctopus.com/virtuemart-security-warning" title="Virtuemart Security Warning">VirtueMart errors on checkout</a>. </p>
</li>
<li>
<p><strong>Use SSL only when needed</strong>: Only use SSL on checkout pages &#8211; other than that, use normal <em>http</em>. The reason of this is that there is some overhead associated with using SSL, for both the client machine and the server.</p>
</li>
<li>
<p><strong>Ensure that the order of the plugins is correct</strong>: 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.</p>
</li>
<li>
<p><strong>Use caching wisely</strong>: Ask any programmer, and he&#8217;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).</li>
</ol>
<p>We know it&#8217;s hard to implement the above especially if you don&#8217;t have any programming experience, and that&#8217;s why wer&#8217;e here to help. Also, if you want continued maintenance of your Joomla website, then check our <a href="http://www.itoctopus.com/php-consulting/joomla-consulting/joomla-maintenance-package" title="Joomla maintenance package">Joomla maintenance package</a>. It&#8217;ll ensure that your website works and performs as it should &#8211; all the time! Oh, and it&#8217;s very affordable!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/25-joomla-important-tips/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Duplicate a Joomla Site</title>
		<link>http://www.itoctopus.com/how-to-duplicate-a-joomla-site</link>
		<comments>http://www.itoctopus.com/how-to-duplicate-a-joomla-site#comments</comments>
		<pubDate>Tue, 31 Jan 2012 20:01:52 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1311</guid>
		<description><![CDATA[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, [...]]]></description>
			<content:encoded><![CDATA[<p>We have explained before how you can <a href="http://www.itoctopus.com/how-to-move-your-joomla-website-to-another-server" title="How to Move Your Joomla Website to Another Server?">move your Joomla website from one server to another</a>. 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.</p>
<p>In short, the process is:</p>
<ul>
<li>Download your Joomla website, preferably through FTP</li>
<li>Export your database, preferably through <em>phpMyAdmin</em></li>
<li>Upload your downloaded Joomla website to the new location</li>
<li>Import the exported database into a new database</li>
<li>Change the <em>configuration.php</em> file to point to the right Joomla installation and the right database</li>
</ul>
<p>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&#8217;s call this directory <em>myjoomlawebsite</em>.</p>
<p>The second step is to export the database. All you need to do is to go the <em>phpMyAdmin</em> 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 &#8220;Import/Export&#8221; tab on the top right. Follow the instructions there to export your database. Call the exported file <em>myjoomlawebsite.sql</em></p>
<p>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 <em>myjoomlawebsite</em>. Now that the folders/files are uploaded, you will need to import the database. Just go to the <em>phpMyAdmin</em> of the new location (which may or may not be on the new server), create a new database and call it, for example, <em>myjoomladatabase2</em>, and then click on import on the top. Follow the instructions to import <em>myjoomlawebsite.sql</em> into <em>myjoomladatabase2</em>.</p>
<p>Now the final step is to modify the <em>configuration.php</em> 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&#8217;s how to do this:</p>
<ul>
<li>Open your <em>configuration.php</em> file located under your duplicated Joomla website.</em>
<li>Change the value of <em>$db</em> to the name of the duplicated database, which is <em>myjoomladatabase2</em>.</li>
<li>Change the value of <em>$user</em> and <em>$password</em> to point to the right ones (that are able to access the duplicated database).</li>
<li>Change the value of the <em>$live_site</em> to your new domain (or sub-domain)</em>
<li>Change the value of the <em>$log_path</em> and <em>$tmp_path</em> to point to the physical log and temporary directory paths on the new website.</li>
<li>That&#8217;s it!</li>
</ul>
<p>Just following the above instructions is sufficient to duplicate your Joomla website.</p>
<p>Some important things to mention:</p>
<ul>
<li>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&#8217;re the one behind the duplication of the website, and it wasn&#8217;t just someone stealing your content (it will be considered as <a href="http://www.itoctopus.com/how-to-handle-duplicate-content-on-your-joomla-website" title="How to Handle Duplicate Content on Your Joomla Website?">duplicate content</a>). If you must duplicate your website, then make sure that the new website is only reachable through an Apache password (by using an <em>htpasswd</em> file).
</li>
<li>
<p>We don&#8217;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&#8217;s the same version), and then install Akeeba, and then use Akeeba to import your new website.</p>
</li>
<li>
<p>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&#8230;</li>
</ul>
<p>If you need help duplicating your Joomla website then all you need to do is <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>. <a href="http://www.itoctopus.com/fees" title="Our fees!">Our fees</a> are very cheap and we&#8217;re always excited to work with new customers!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-duplicate-a-joomla-site/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Handle Duplicate Content on Your Joomla Website?</title>
		<link>http://www.itoctopus.com/how-to-handle-duplicate-content-on-your-joomla-website</link>
		<comments>http://www.itoctopus.com/how-to-handle-duplicate-content-on-your-joomla-website#comments</comments>
		<pubDate>Mon, 30 Jan 2012 18:23:45 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1282</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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:</p>
<ul>
<li>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 <em>redirected=1</em> (this happens when you are being redirected from https to http) and this one <em>flypage=</em> to the links of your products pages. These links are internal for VirtueMart and do not change the content whatsoever.
</li>
<li>
<p>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 <em>http//www.yourjoomlawebsite.com?option=com_content&#038;articleId=5</em> and <em>http://www.yourjoomlawebsite.com/yourarticle.html</em> which are actually the same pages.</p>
</li>
<li>
<p>You have the exact same content under different links. For example, you have something like <em>http://www.yourjoomlawebsite.com/featured/yourarticle.html</em> and <em>http://www.yourjoomlawebsite.com/yourarticle.html</em>.</p>
</li>
<li>
<p>You have a printer-friendly and/or pdf versions of your articles, but you&#8217;re not using the <em>no-index</em> search engine directive for these versions.</p>
</li>
<li>
<p>Your website is indexed in both the <em>www</em> and the <em>non-www</em> versions. So, if you enter something like <em>&#8220;site:www.yourjoomlawebsite.com&#8221;</em> and <em>&#8220;site:yourjooomlawebsite.com&#8221;</em> on Google you will get a different number of results .</li>
</ul>
<p>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:</p>
<ul>
<li><strong>Use the robots.txt</strong>: The <em>robots.txt</em> is always read by search engines. It will tell search engines which pages to index (and subsequently rank) and which pages to <em>not</em> index. The <em>robots.txt</em> 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 <em>?redirected=1</em> flag, you will need to add the following line in your <em>robots.txt</em> file:
<p><code>Disallow: /*?redirected=1</code></p>
<p>The above line tells search engines not to crawl and not to index any page that ends with <em>?redirected=1</em> .</p>
<p>Now let&#8217;s disallow indexing of printer-friendly versions of the website. We can do it from <em>robots.txt</em> if the link to the printer friendly version ends with <em>printer=1</em>. Here&#8217;s how to do it in this case:</p>
<p><code>Disallow: /*printer=1</code></p>
<p>Now, every link that ends with <em>printer=1</em> will not be indexed (of course, you might want to slightly modify this to accommodate your needs).</p>
</li>
<li>
<p><strong>Use the no-index directive</strong>: We have explained, in the above, how to use <em>robots.txt</em> to block search engines from indexing your printer-friendly pages. But this can be done also at the page level, by using the <em>no-index</em> directive. All you need to do is add the following code at the top of your printer-friendly page:</p>
<p><code>&lt;meta name="robots" content="noindex, nofollow"&gt;</code></p>
<p>The above will instruct search engines not to index the printer-friendly page, and not to follow any links on that page.</p>
<li>
<p><strong>Do not have a mix of SEF and non-SEF links on your website</strong>: 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 <a href="http://www.itoctopus.com/the-joomla-experts" title="The Joomla Experts">Joomla Experts</a> in this situation.</p>
</li>
<li>
<p><strong>Have only one version of your website</strong>: By default, any website has two versions: a <em>www</em> version an a <em>non-www</em>. 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&#8217;s how to do so (assuming you want to redirect non-www traffic to www):</p>
<p><code>RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^yourjoomlawebsite.com<br />
RewriteRule (.*) http://www.yourjoomlawebsite.com/$1 [R=301,L]</code></p>
</li>
<li><strong>Ensure that your pages do not contain content copied from other pages on your website</strong>: While this is tolerated by search engines when only done in a couple of pages, it is considered as spam in case it&#8217;s done in several pages.</li>
</ul>
<p>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&#8217;t hesitate to <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>. We&#8217;re here to help you, we&#8217;re very friendly, and we will treat your business as ours. Oh, and be sure to check our very <a href="http://www.itoctopus.com/fees" title="Our fees!">affordable rates</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-handle-duplicate-content-on-your-joomla-website/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to Protect Your Content on Your Joomla Website</title>
		<link>http://www.itoctopus.com/how-to-protect-your-content-on-your-joomla-website</link>
		<comments>http://www.itoctopus.com/how-to-protect-your-content-on-your-joomla-website#comments</comments>
		<pubDate>Wed, 25 Jan 2012 21:34:21 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1240</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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 &#8211; 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 &#8211; depending on your technical knowledge and/or depending on your environment.</p>
<p>Now let&#8217;s get back to the main topic &#8211; 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&#8217;s Joomla or not) &#8211; when the information is public, it just becomes <em>public</em>. 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:</p>
<ul>
<li><strong>Disabling right-clicking</strong>: You can <a href="http://www.itoctopus.com/how-to-prevent-right-click-in-joomla" title="How to Prevent Right Click in Joomla?">disable right clicking on your Joomla website</a> 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).
</li>
<li>
<p><strong>Streaming your videos</strong>: Using streaming to display videos is the best way as it&#8217;s much lighter on your bandwidth and people won&#8217;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.</p>
</li>
<li>
<p><strong>Blocking access to content thieves</strong>: If your website doesn&#8217;t receive a lot of traffic, then you&#8217;ll be able, after a thorough analysis of your weblogs, to know which IP is stealing content from your Joomla website. You can either <a href="http://www.itoctopus.com/how-to-block-an-ip-address-on-your-joomla-website" title="How to Block an IP Address on Your Joomla Website?">block that IP</a> or <a href="http://www.itoctopus.com/how-to-block-a-whole-country-on-your-joomla-website" title="How to Block a Whole Country on Your Joomla Website?">block the country that hosts this IP</a> altogether. Again, if the person is persistent, then he might try to use a proxy to illegally gain access to your website.</p>
</li>
<li>
<p><strong>Adding a copyright notice</strong>: Something like <em>&copy; copyright www.yourjoomlawebsite.com</em> 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&#8217;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).</p>
</li>
<li>
<p><strong>Checking for duplicates on the Internet</strong>: 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&#8217;s say that you have this sentence in one of your articles: <em>The lazy fox jumped over quick brown dog who was following a frog who was trying to eat a fly</em>. To check for duplicates on the web, you copy this sentence, and you add enclosing quotes, so it will be <em>&#8220;The lazy fox jumped over quick brown dog who was following a frog who was trying to eat a fly&#8221;</em> 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&#8217;t reply, then your next step is to alert Google.</li>
</ul>
<p>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 <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll take it from there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-protect-your-content-on-your-joomla-website/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joomla Template Is Not Working!</title>
		<link>http://www.itoctopus.com/joomla-template-is-not-working</link>
		<comments>http://www.itoctopus.com/joomla-template-is-not-working#comments</comments>
		<pubDate>Tue, 24 Jan 2012 22:35:57 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1251</guid>
		<description><![CDATA[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:

The template works and your website looks exactly as the demo image/website for the template.
Possible cause(s):

The [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you find a very beautiful Joomla template (no, <a href="http://www.itoctopus.com/do-joomla-websites-have-to-be-ugly" title="Do Joomla Websites Have to Be Ugly?">not all Joomla websites are ugly</a>), 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:</p>
<ol>
<li><strong>The template works and your website looks exactly as the demo image/website for the template.</strong></p>
<p><em>Possible cause(s):</em></p>
<ul>
<li>The template perfectly matches your Joomla version and doesn&#8217;t require extensions that you don&#8217;t have installed and activated.</li>
</ul>
<p><em>Action(s) to take:</em></p>
<ul>
<li>None. You&#8217;re now proud of your website and of your work! Congratulations!</li>
</ul>
</li>
<li>
<p><strong>The template works, but displays a few errors here and there.</strong></p>
<p><em>Possible Cause(s):</em></p>
<ul>
<li>You are missing some extensions (modules or plugins) that the template requires to work perfectly.
</li>
<li>
<p>The template&#8217;s code contains some small errors.</li>
</ul>
<p><em>Action(s) to take:</em></p>
<ul>
<li>Read the template&#8217;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.
</li>
<li>
<p>Check the template&#8217;s code for any error and fix it.</li>
</ul>
</li>
<li>
<p><strong>The template works, but doesn&#8217;t look exactly as the demo image/website for that template.</strong></p>
<p><em>Possible Cause(s):</em></p>
<ul>
<li>The template requires some extensions, but it is well programmed to work well even without these extensions.</li>
</ul>
<p><em>Action(s) to take:</em></p>
<ul>
<li>Read the template&#8217;s instructions manual and see what are the extensions it needs to work perfectly.</li>
</ul>
</li>
<li>
<p><strong>The template doesn&#8217;t work, and you see a blank page on your website.</strong></p>
<p><em>Possible Cause(s):</em></p>
<ul>
<li>Your Joomla website is set to hide all errors (regardless of how critical they are) and the template <u>requires</u> the presence of either an extension that you don&#8217;t have (or you don&#8217;t have installed) or is using a PHP function/class that is not available in your environment.</p>
</li>
<li>
<p>The template you have downloaded contains a fatal error in the code.</li>
</ul>
<p><em>Action(s) to take:</em></p>
<ul>
<li>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.</p>
</li>
<li>
<p>Check to see if there&#8217;s a call to a PHP function that you don&#8217;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.</li>
</ul>
</li>
<li>
<p><strong>The template doesn&#8217;t work, and you see a page full of errors on your website.</strong></p>
<p><em>Possible Cause(s):</em></p>
<ul>
<li>The template cannot work without one or more extensions, and you don&#8217;t have this(these) extension(s) installed and activated. (Note that these <em>required</em> extensions are usually plugins)
</li>
<li>
<p>There is a PHP error in the actual code of the template.</p>
</li>
<li>
<p>There is a call to a PHP function or a PHP class that does not exist in your environment.</p>
</ul>
<p><em>Action(s) to take:</em></p>
<ul>
<li>Check each and every error message to see what are the files that the template is complaining that it cannot find. These <em>missing</em> files usually tell you what are the extensions that you need but you don&#8217;t have to run this template.
</li>
<li>
<p>Read the instructions manual of the template. It will usually tell you what are the extensions that the template needs.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>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 <a href="http://www.itoctopus.com/the-joomla-experts" title="The Joomla Experts">Joomla Experts</a> fix it for you.</li>
</ul>
</li>
<li>
<p><strong>The template cannot be installed.</strong></p>
<p><em>Possible Cause(s):</em></p>
<ul>
<li>The template is written for a Joomla version other than the one you have on your website. For example, you&#8217;re trying to install a Joomla 1.5 template on your Joomla 1.7 website (or vice versa).
</li>
<li>
<p>The template&#8217;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.</li>
</ul>
<p><em>Action(s) to take:</em></p>
<ul>
<li>Check the XML file for the template to see if it&#8217;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 <a href="http://www.itoctopus.com/can-i-use-joomla-1-5-templates-in-joomla-1-6" title="Can I Use Joomla 1.5 Templates in Joomla 1.6?">fix it so that it can work on the Joomla version of your choice</a> or just search for a different template altogether.
</li>
<li>
<p>Check the XML file for the template to see if it contains any errors (unclosed tags, etc&#8230;) and fix these errors.</li>
</ul>
</li>
</ol>
<p>If you run into any problem installing a Joomla template, then feel free to <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>. We&#8217;re always ready to help and <a href="http://www.itoctopus.com/fees" title="Our rates">our rates</a> are extremely affordable!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/joomla-template-is-not-working/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to Prevent Hotlinking in Joomla</title>
		<link>http://www.itoctopus.com/how-to-prevent-hotlinking-in-joomla</link>
		<comments>http://www.itoctopus.com/how-to-prevent-hotlinking-in-joomla#comments</comments>
		<pubDate>Mon, 23 Jan 2012 19:46:58 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1200</guid>
		<description><![CDATA[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&#8230;). In other words, let&#8217;s say that [...]]]></description>
			<content:encoded><![CDATA[<p>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&#8230;). In other words, let&#8217;s say that you have, on your Joomla website (let&#8217;s call your website <em>yourjoomlawebsite.com</em>), an image called <em>robot.jpg</em> under the <em>images/stories</em> directory. That image is about 1 MB in size. Another website (let&#8217;s call it <em>leecherwebsite.com</em>) has a page called <em>leecherpage.html</em> that has some text and the following HTML code:</p>
<p><code>&lt;img src="http://yourjoomlawebsite.com/images/stories/robot.jpg" title="checkout this cute robot!" alt="checkout this cute robot!"&gt;</code></p>
<p>As you can see, the page <em>leecherpage.html</em> directly referenced <em>your</em> image on <em>your</em> 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 &#8211; this will literally <em>drain</em> your bandwidth.</p>
<p>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&#8217;re aware of) that prevents a website from hotlinking to another website. So what can you do to prevent hotlinking to your Joomla website?</p>
<p>Well, the only way to prevent hotlinking is by editing the <em>.htaccess</em> file, which can be found in the root directory of your website. So, you will need to add the following lines to your <em>.htaccess</em> file:</p>
<p><code>RewriteEngine on<br />
RewriteCond %{HTTP_REFERER} !^$<br />
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourjoomlawebsite.com/.*$ [NC]<br />
RewriteRule \.(bmp|gif|jpg|png|svg|avi|mp3|wmv|css|js|pdf)$ - [F]</code></p>
<p>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:</p>
<p><code>RewriteRule \.(bmp|gif|jpg|png|svg|avi|mp3|wmv|css|js|pdf)$ - [F]</code></p>
<p>If you need help in preventing hotlinking to your Joomla website, then you can just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>. We&#8217;re always a call or an email away, we&#8217;re very helpful, and we&#8217;re very friendly! Oh, and <a href="http://www.itoctopus.com/fees" title="Our fees!">our rates</a> are super cheap!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-prevent-hotlinking-in-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Set Meta Tags on sh404 Using PHP</title>
		<link>http://www.itoctopus.com/how-to-set-meta-tags-on-sh404-using-php</link>
		<comments>http://www.itoctopus.com/how-to-set-meta-tags-on-sh404-using-php#comments</comments>
		<pubDate>Fri, 20 Jan 2012 21:18:35 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1225</guid>
		<description><![CDATA[If you want to enhance your Joomla website&#8217;s SEO, the first thing that you will need to work with is your meta tags, particularly the description meta tag. If you&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to enhance your Joomla website&#8217;s SEO, the first thing that you will need to work with is your meta tags, particularly the description meta tag. If you&#8217;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:</p>
<ol>
<li>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)</li>
<li>It will take a long, long time trying to set the description meta tag if you have a VirtueMart store with thousands of products.</li>
</ol>
<p>So, what can you do to overcome this problem? Well, the solution is simple, you just modify the PHP code in the file <em>shPageRewrite.php</em>, which is located under <em>/your_joomla_website_folder/components/com_sh404sef</em> folder.</p>
<p>Let&#8217;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:</p>
<ul>
<li>Get the product ID (you can easily get it from the Joomla <em>get</em> parameters).</li>
<li>Get the category ID.</li>
<li>Create a function that will get the product name and another one that will get the category name.</li>
<li>Get the top 10 products falling under this product&#8217;s category.</li>
<li>Create a meta description for the product that sounds something like &#8220;Product A belongs to Category C. Products similar to Product A include <em>here goes a list of the top 10 products falling under Category C</em>.</li>
</ul>
<p>The above code should be placed in the file <em>shPageRewrite.php</em>, just after the following code:</p>
<p><code>
<pre>
      if (!is_null($shCustomDescriptionTag)) {
        $t = htmlspecialchars( shCleanUpDesc($shCustomDescriptionTag), ENT_COMPAT, 'UTF-8');
        $t = preg_replace( '#\$([0-9]*)#', '\\\$${1}', $t);</pre>
<p></code></p>
<p>The string resulting from your above code should be placed in the <em>$t</em> variable.</p>
<p>As you can see, this is pretty advanced stuff, and you need to be a programmer in order to do this. Now, if you&#8217;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 <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll take it form there. Don&#8217;t worry, <a href="http://www.itoctopus.com/fees" title="Our fees!">our fees</a> are very fair!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-set-meta-tags-on-sh404-using-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Remove the Category ID from the Page Title in VirtueMart</title>
		<link>http://www.itoctopus.com/how-to-remove-the-category-id-from-the-page-title-in-virtuemart</link>
		<comments>http://www.itoctopus.com/how-to-remove-the-category-id-from-the-page-title-in-virtuemart#comments</comments>
		<pubDate>Mon, 16 Jan 2012 14:44:18 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1189</guid>
		<description><![CDATA[A couple of days ago a customer approached us with the following problem: His Joomla&#8217;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 &#8220;Cheap TVs&#8221; as the page title, his page title was &#8220;72-Cheap TVs&#8221;. Obviously, this [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of days ago a customer approached us with the following problem: His Joomla&#8217;s VirtueMart shop was displaying the category ID in the title of the page of each <em>category details</em> page. So, for example, instead of having something as &#8220;Cheap TVs&#8221; as the page title, his page title was &#8220;72-Cheap TVs&#8221;. Obviously, this is a big hit when it comes to SEO.</p>
<p>Further examination of his website revealed that:</p>
<ul>
<li>He was using sh404 for URL rewriting. (if only we had a penny everytime someone had a problem with this extension!)</li>
<li>He enabled sh404 for his VirtueMart shop.</li>
<li>He chose to <em>Insert the category ID in the URL</em>. (this is a setting in the sh404 settings for VirtueMart)</li>
</ul>
<p>Here&#8217;s what we did to fix the problem:</p>
<ul>
<li>We opened the file containing the code responsible for adding the category ID &#8211; this file is <em>components/com_sh404sef/meta_ext/com_virtuemart.php</em></li>
<li>We found the function <em>vm_sef_get_category_title</em> (which can be usually found at line 63 of the above file)</li>
<li>We changed the following code:
<p><code>
<pre>$title .= ($sefConfig->shInsertCategoryId ?
    $tree[ $category_id ]->category_id.$sefConfig->replacement : '')
    .$tree[ $category_id ]->category_name. ' | ';</pre>
<p></code></p>
<p>to</p>
<p><code>
<pre>$title .= $tree[ $category_id ]->category_name. ' | ';</pre>
<p></code></li>
<li>That fixed the problem!</li>
</ul>
<p>This is clearly a bug in sh404, but obviously the sh404 people don&#8217;t want to admit that it&#8217;s their problem, although the code that is behind this bug is clearly in one of their components/files.</p>
<p>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 <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>. We&#8217;re here to help, we&#8217;re efficient, we&#8217;re fast, we&#8217;re friendly, and <a href="http://www.itoctopus.com/fees" title="Our fees!">we&#8217;re not expensive</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-remove-the-category-id-from-the-page-title-in-virtuemart/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Block a Whole Country on Your Joomla Website?</title>
		<link>http://www.itoctopus.com/how-to-block-a-whole-country-on-your-joomla-website</link>
		<comments>http://www.itoctopus.com/how-to-block-a-whole-country-on-your-joomla-website#comments</comments>
		<pubDate>Thu, 12 Jan 2012 17:42:07 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1149</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>We have explained before on <a href="http://www.itoctopus.com/how-to-block-an-ip-address-on-your-joomla-website" title="How to Block an IP Address on Your Joomla Website?">how to block a specific IP or range of IPs from accessing your Joomla website</a>. Since we have published that article, we had many requests asking us on how to block a specific country from accessing a Joomla website.</p>
<p>Now why would anyone want to block a whole country (or even several countries) from accessing his or her Joomla website?</p>
<p>There are several reasons for this, the most important ones are:</p>
<ul>
<li><strong>There is too much spam coming from that particular country</strong>: The owner&#8217;s website is flooded with spam (such as comment spam and referral spam) coming from that country.
</li>
<li>
<p><strong>There is too much fraud coming from that particular country</strong>: For example, the owner of the Joomla website runs a VirtueMart store and most transactions coming from that country are fraudulent.</p>
</li>
<li>
<p><strong>Too many invalid clicks on ads</strong>: 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.</p>
</li>
<li>
<p><strong>Preventive measure against hacking</strong>: 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.</p>
</li>
<li>
<p><strong>The country is sending too much automated traffic</strong>: This automated traffic can be automated spam, scraper bots, etc&#8230;</li>
</ul>
<p>There are also many other reasons for a Joomla website owner to block traffic from a specific country&#8230;</p>
<p>Now, the question is, can this be done? And if yes, then how can it be done?</p>
<p>Well, we&#8217;re happy to say that this can be done, but it&#8217;s not easy&#8230; Here&#8217;s a step by step guide on how to block traffic from a whole country to your Joomla website:</p>
<ol>
<li>Download the IP to Country (also referred to as <em>Geo IP</em>) database available <a href="http://software77.net/geo-ip/" target="_blank' rel="nofollow">here</a>.
</li>
<li>
<p>Import the above file into a MySQL table (an empty MySQL table).</p>
</li>
<li>
<p>Copy the following code into your <em>index.php</em> file:<br />
	<code>
<pre>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;
}</pre>
<p></code></p>
<p>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])</p>
</li>
<li>
<p>Now that you have the script to get the numerical value of the IP, add another script to your <em>index.php</em> 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 <em>die</em>.</li>
</ul>
<p>If you need help doing the above, then we can do it for you, it&#8217;ll only take us 8 hours and <a href="http://www.itoctopus.com/fees" title="Our fees!">our fees</a> are very fair! Just <a href="http://www.itoctopus.com/contact-us" title="Contact Us!">contact us</a> and see how fast, efficient, and friendly we are!</p>
<p><em>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&#8217;s simply easier.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-block-a-whole-country-on-your-joomla-website/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Unable to Save Global Configuration in Joomla</title>
		<link>http://www.itoctopus.com/unable-to-save-global-configuration-in-joomla</link>
		<comments>http://www.itoctopus.com/unable-to-save-global-configuration-in-joomla#comments</comments>
		<pubDate>Wed, 11 Jan 2012 15:47:07 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1130</guid>
		<description><![CDATA[You think that it&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<p>You think that it&#8217;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 <em>Save</em> on the top right, and you are <em>greeted</em> by the following error:</p>
<p><em>An Error has occurred! Unable to open configuration.php file to write!</em></p>
<p>Instead of seeing this success message:</p>
<p><em>The Global Configuration details have been updated.</em></p>
<p>You try it again, and again, and again&#8230; But you always see the same error message, where Joomla complains that it&#8217;s not able to write to the configuration file. So, why are you seeing this error, and how do you fix it?</p>
<p><strong>Why are you seeing this error?</strong></p>
<p>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 &#8211; among others &#8211; the connection parameters to the database, so you need this information <em>before</em> connecting to the database). This global configuration file is called <em>configuration.php</em> and is located under the root directory of your Joomla website. When you try to update your configurations settings, Joomla opens this file in <em>writing</em> 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 <em>configuration.php</em> file?</p>
<p>In our experience, there are two reasons:</p>
<ol>
<li>The permissions on your configuration.php are only set to read (for example 444/-r&#8211;r&#8211;r&#8211;) for all groups.</li>
<li>There are some filesystem/server related issues that are preventing write activities. For example, the server hard disk is write-protected.</li>
</ol>
<p>Of course, the most common reason for this problem is the first one&#8230; </p>
<p><strong>How do you fix the problem</strong></p>
<p>The first thing to do is to check the permissions on your <em>configuration.php</em> file (again, the file is located under the root directory of your website, so it&#8217;s most likely under <em>public_html</em> or <em>public_html/yourdomainname.com</em>). You can check the permissions by connecting through FTP to your website, and then <em>right clicking</em> on the <em>configuration.php</em>, 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&#8211;r&#8211;r&#8211; (note that non-writable permissions can be something else), this means that the permissions on your configuration file only allow the file to be <em>read</em> by all groups. The best thing to do in this case is to change the permissions for the <em>configuration.php</em> file to 666 or to -rw-rw-rw-<sup><a href="#note-1130-1">1</a></sup>&nbsp;<sup><a href="#note-1130-2">2</a></sup>. Instructions on how to do so vary from one FTP client to the other, but they should be straightforward. Now login to your Joomla&#8217;s control panel using a super administrator account, and try changing some configuration settings and click on &#8220;Save&#8221; at the top right and see if it works for you<sup><a href="#note-1130-3">3</a></sup>. If it doesn&#8217;t, the move to the next step&#8230;</p>
<p>Now if you&#8217;re still reading, then it means that your Joomla still can&#8217;t write the settings to the <em>configuration.php</em> file<sup><a href="#note-1130-4">4</a></sup>, and it&#8217;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 <em>configuration.php</em> file and they&#8217;ll fix it for you.</p>
<p>If you think that you still need help, then that&#8217;s why we&#8217;re here! Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll take care of this problem in no time. And don&#8217;t worry, <a href="http://www.itoctopus.com/fees" title="Our fees!">our fees</a> are very competitive. Oh, and we&#8217;re <em>very</em> friendly!</p>
<p><sup><a name="note-1130-1">1</a></sup><em>If you&#8217;re unable to change the permissions on your configuration.php file, then it means you&#8217;re not allowed to by your web host. Check with them on how to address this problem.</em><br />
<sup><a name="note-1130-2">2</a></sup><em>If the original permissions are anything other than 666, then change them to 666 and see if Joomla is able to save you configuration settings.</em><br />
<sup><a name="note-1130-3">3</a></sup><em>Once you&#8217;re done, it is advisable to change the permissions of your <em>configuration.php</em> file to 444, regardless of the original permissions.</em><br />
<sup><a name="note-1130-4">4</a></sup><em>In 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&#8217;s unable to write to the configuration file).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/unable-to-save-global-configuration-in-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What Is the Fastest Way to Install Joomla?</title>
		<link>http://www.itoctopus.com/what-is-the-fastest-way-to-install-joomla</link>
		<comments>http://www.itoctopus.com/what-is-the-fastest-way-to-install-joomla#comments</comments>
		<pubDate>Tue, 10 Jan 2012 14:16:29 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1096</guid>
		<description><![CDATA[Sometimes, especially if you&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes, especially if you&#8217;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: <a href="http://www.itoctopus.com/how-much-disk-space-does-joomla-need" title="How Much Disk Space Does Joomla Need?">Joomla 1.5.25 and 1.7.3 have over 4,000 files each</a> &#8211; imagine how much time it takes if the upload of each file takes only a second).</p>
<p>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.</p>
<p><strong>If you have shell access to the server</strong></p>
<ul>
<li>Login to the shell
</li>
<li>
<p>Download the Joomla installation using <em>wget</em>:</p>
<ul>
<li>The code for downloading Joomla 1.5.25 using <em>wget</em> is:</p>
<p><code>wget http://joomlacode.org/gf/download/frsrelease/16026/69665/Joomla_1.5.25-Stable-Full_Package.zip</code></p>
</li>
<li>
<p>The code for downloading Joomla 1.7.3 using <em>wget</em> is:</p>
<p><code>wget http://joomlacode.org/gf/download/frsrelease/16024/69674/Joomla_1.7.3-Stable-Full_Package.zip</code></li>
</ul>
</li>
<li>
<p>Extract the Joomla zip file that you just downloaded</p>
<ul>
<li>The code to extract (unzip) the Joomla 1.5.25 zipped installation is:</p>
<p><code>unzip Joomla_1.5.25-Stable-Full_Package.zip  -d your_www_directory</code> (<em>your_www_directory</em> is your <em>public_html</em> directory and it is something like : <em>/home/www/</em>)</li>
</ul>
<p>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.
</li>
<li>
<p>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 &#8211; no tables) or use a database that already exists (make sure you&#8217;re using a table prefix that is not already used in this database!)</li>
</ul>
<p><strong>If you have cPanel</strong></p>
<p>Now, if you don&#8217;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 &#8211; most of them do these days). All you need to do is the following:</p>
<ul>
<li>Download the latest Joomla installation as a zip file and save this zip file to your PC.
</li>
<li>
<p>Upload the zip file from your PC to your public FTP directory (or to any other directory of your choice).</p>
</li>
<li>
<p>Login to your cPanel account.</p>
</li>
<li>
<p>Click on File Manager (which should be in the third box from the top in your cPanel interface).</p>
</li>
<li>
<p>Now choose <em>Public FTP Root</em> 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).</p>
</li>
<li>
<p>Once the <em>File Manager</em> is open, click on the name of the zipped Joomla file, and then click on Extract, and then choose <em>/public_html</em> or <em>/public_html/yourdomainname</em> as the directory to extract Joomla to. Be careful, if you choose <em>/public_html</em>, and there is already a website installed there, then you will overwrite it. Do this very carefully!</p>
</li>
<li>
<p>That&#8217;s it! You&#8217;re done! You can now go <em>http://yourdomainname.com/</em> and follow the instructions to install Joomla (you will need to create an empty database for Joomla to install its data)</li>
</ul>
<p>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.</p>
<p>Now, if you&#8217;re in a hurry and you think that you need help doing the above, then we&#8217;re always here, <a href="http://www.itoctopus.com/our-joomla-emergency-services" title="Our Joomla Emergency Services">24/7/365</a>! Just <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and we&#8217;ll do it for you immediately (we&#8217;ll only charge you for an hour of work &#8211; check our <a href="http://www.itoctopus.com/fees" title="Our fees!">latest fees</a> to see how much that&#8217;s going to cost you &#8211; don&#8217;t worry, it&#8217;s not going to be much).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/what-is-the-fastest-way-to-install-joomla/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Migrate from osCommerce to VirtueMart?</title>
		<link>http://www.itoctopus.com/how-to-migrate-from-oscommerce-to-virtuemart</link>
		<comments>http://www.itoctopus.com/how-to-migrate-from-oscommerce-to-virtuemart#comments</comments>
		<pubDate>Mon, 09 Jan 2012 22:22:55 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[osCommerce]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1088</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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 <em><u>shop</u>.theirdomainname.com</em> 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&#8217;s supported by a much larger community and that its VirtueMart e-commerce extension is nearly as powerful as osCommerce.</p>
<p>Now, the first thing that we tell our (potential) customers when we get this request: It&#8217;s not easy. Here&#8217;s why:</p>
<ul>
<li>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 <em>osCommerce to Joomla</em> migration, and not <em>osCommerce to VirtueMart</em> migration.</p>
</li>
<li>
<p>osCommerce has <em>contributions</em>, which is a very similar concept to Joomla&#8217;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.</p>
</li>
<li>
<p>Tables and table structures are completely different between VirtueMart and osCommerce, so it&#8217;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.</li>
</ul>
<p>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 &#8211; we&#8217;re talking about a month of work here).</p>
<p>Now, of course, this migration would be very costly, so are there any alternatives?</p>
<p>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:</p>
<ul>
<li>Store settings</li>
<li>Users (Buyers)</li>
<li>Product Categories</li>
<li>Products</li>
<li>Promotions/Coupons</li>
<li>Orders</li>
<li>Vendors/Manufacturers</li>
<li>Taxes</li>
<li>Shipping</li>
<li>etc&#8230;</li>
</ul>
<p>There is a lot of data that needs to be migrated, and that&#8217;s why the process will still take a week (5 working days or 40 hours &#8211; check <a href="http://www.itoctopus.com/fees" title="Our Fees!">our fees</a> to see what the total cost will be for the migration) to finish. But is it worth it? Well, let&#8217;s check the benefits of migrating from osCommerce to VirtueMart&#8230;</p>
<h3>What Are the Advantages of Migrating from osCommerce to VirtueMart?</h3>
<ul>
<li><strong>Ease of use</strong>: osCommerce is a very powerful ecommerce CMS, but it&#8217;s also very complicated and thus very hard to use. Joomla, on the other hand, <a href="http://www.itoctopus.com/is-joomla-hard-to-learn" title="Is Joomla Hard to Learn?">is much easier</a> 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.
</li>
<li>
<p><strong>Better support</strong>: 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.</p>
</li>
<li>
<p><strong>More integration</strong>: 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.</li>
</ul>
<p>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?</p>
<h3>Some Frequently Asked Questions</h3>
<p><strong>Will the products&#8217; URLs be the same when we migrate from osCommerce to VirtueMart?</strong></p>
<p>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.</p>
<p><strong>How hard is VirtueMart when compared to osCommerce?</strong></p>
<p>VirtueMart is very easy to use (it&#8217;s a Joomla extension, after all), we can&#8217;t say the same thing about osCommerce.</p>
<p><strong>How powerful is VirtueMart when compared to osCommerce?</strong></p>
<p>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&#8217;t exist in VirtueMart that you really need?</p>
<p><strong>Will the functionality be migrated as well?</strong></p>
<p>Only VirteMart supported functionality will be available. Functionality that is exclusive to osCommerce will not be migrated (but <em>can</em> be migrated for an extra fee).</p>
<p><strong>What are the pitfalls for this migration?</strong></p>
<p>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:</p>
<ul>
<li>Migrating the data but not migrating the files (images, documents, etc&#8230;)</li>
<li>Not migrating the data to the right places or not migrating the data to all the necessary places</li>
<li>Not placing the migrated files in the right directory(ies) and/or not creating this directory (these directories)</li>
</ul>
<p><strong>Why not migrate VirtueMart to osCommerce?</strong></p>
<p>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?</p>
<p>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 <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a> and see how rapidly and efficiently we can do this!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-migrate-from-oscommerce-to-virtuemart/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Images Not Appearing on Your Joomla Website?</title>
		<link>http://www.itoctopus.com/images-not-appearing-on-your-joomla-website</link>
		<comments>http://www.itoctopus.com/images-not-appearing-on-your-joomla-website#comments</comments>
		<pubDate>Thu, 05 Jan 2012 22:51:12 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1069</guid>
		<description><![CDATA[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:

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

Let us discuss each one of the [...]]]></description>
			<content:encoded><![CDATA[<p>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:</p>
<ol>
<li>Joomla SEF or an equivalent URL rewrite extension</li>
<li>The short_open_tag directive in php.ini</li>
<li>The asp_tag directive in php.ini</li>
</ol>
<p>Let us discuss each one of the above.</p>
<p><strong>Joomla SEF causing images not to display</strong></p>
<p>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 <em>Extensions</em> &#8211; <em>&#8220;Manage Plugins&#8221;</em>, you need to make sure that the order of the <em>Joomla SEF</em> plugin is after all the content plugins, but before the <em>Joomla Cache</em> plugin.</p>
<p>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&#8217;s not a core plugin) and make sure that its ordered to be executed <u>after</u> the <em>Joomla SEF</em> runs. You might be wondering, isn&#8217;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.</p>
<p><em>How do you know instantly that the problem is related to Joomla SEF plugin?</em></p>
<p>In order to know in less than 1 minute whether the <em>Joomla SEF</em> 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.</p>
<p><strong>short_open_tag PHP directive is set to off  &#8211; but it is used</strong></p>
<p>Let&#8217;s say <a title="How to Move Your Joomla Website to Another Server?" href="http://www.itoctopus.com/how-to-move-your-joomla-website-to-another-server">you move your Joomla website to another (new?) server</a>, 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 <em>Joomla SEF</em> plugin and your turn off URL rewriting, but yet the images are still not appearing. You&#8217;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&#8217;s what you see:</p>
<p><code>&lt;img src="&lt;? echo(YOUR_DOMAIN_URL.'/images/your_missing_image.jpg'); ?&gt;"&gt;</code></p>
<p>You think, odd&#8230; This looks like it&#8217;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&#8217;s using something called <em>short open tags</em>, whereby the programmer uses <code>&lt;?</code> to open the PHP tags (where he writes PHP code), instead of using the <code>&lt;?php</code> . There are four ways to fix this problem:</p>
<ol>
<li>Open your <em>php.ini</em> file, search for the directive <em>short_open_tag</em>, and change its value to <em>on</em> instead of <em>off</em>.</li>
<li>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 <em>short_open_tag</em> directive to <em>on</em>.</li>
<li>Open your <em>index.php</em> file in the root directory of your Joomla website and type the following (in the first line, before any code starts, but after <code>&lt;?php</code> ): <code>ini_set( "short_open_tag", 1 );</code></li>
<li>Locate the file(s) that contains this code <code>&lt;?</code> and change it with <code>&lt;?php</code></li>
</ol>
<p><strong>asp_tags PHP directive is set to off &#8211; but it is used</strong></p>
<p>There are programmers that have <em>ASP</em> background (<em>ASP</em> is a web scripting language developed by Microsoft) and they&#8217;re used to the ASP tags and so they write code like the following line:</p>
<p><code>&lt;%=YOUR_DOMAIN_URL.'/images/your_missing_image.jpg'%&gt;</code>.</p>
<p>The problem though with the above line that it won&#8217;t work if the <em>asp_tags</em> directive is not set to <em>on</em>. You have 3 ways to fix this problem:</p>
<ol>
<li>Open your <em>php.ini</em> file, search for the directive <em>asp_tags</em>, and change its value to <em>on</em> instead of <em>off</em>.</li>
<li>Create a local php.ini, put it in the root directory of your website, and change the value of the <em>asp_tags</em> directive to <em>on</em>.</li>
<li>Locate the file(s) that contains this code <code>&lt;%</code> and change it with <code>&lt;?php</code></li>
</ol>
<p>There are, of course, many other reasons for the images to disappear or not appear in the first place on your website, including:</p>
<ul>
<li>Wrong PHP script used to display the images</li>
<li>Path to the images has changed</li>
<li>Read permissions not given on the images directory</li>
</ul>
<p>If you need any help with your Joomla website not displaying the images, then feel free to <a href="http://www.itoctopus.com/contact-us" title="Contact us">contact us</a>. We&#8217;re always friendly, <a href="http://www.itoctopus.com/fees" title="Our fees">our fees</a> are reasonable, and we&#8217;re always there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/images-not-appearing-on-your-joomla-website/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtuemart Security Warning</title>
		<link>http://www.itoctopus.com/virtuemart-security-warning</link>
		<comments>http://www.itoctopus.com/virtuemart-security-warning#comments</comments>
		<pubDate>Wed, 04 Jan 2012 22:40:44 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=1056</guid>
		<description><![CDATA[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: &#8220;Do [...]]]></description>
			<content:encoded><![CDATA[<p>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 (<em>https://</em>) checkout page, claiming that his checkout page contained some secure and non-secure items.</p>
<p>Here are the errors that our customer was experiencing:</p>
<ul>
<li><strong>On Internet Explorer</strong>: &#8220;Do you want to view only the webpage content that was delivered securely?&#8221; and the message continues &#8220;This webpage contains content that will not be delivered using a secure HTTPS connection, which could compromise the security of the entire webpage&#8221;.
</li>
<li>
<p><strong>On Chrome</strong>: &#8220;Your connection with <em>&#8216;yourdomainname.com&#8217;</em> 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.&#8221;</p>
</li>
<li>
<p><strong>On Firefox</strong>: Firefox displays a full page with the header &#8220;Connection Is Untrusted&#8221;.</li>
</ul>
<p>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 &#8220;untrusted&#8221; website). According to our experience, there are 3 reasons for this to happen:</p>
<ul>
<li>Linking to an image without using <em>https://</em> while in secure mode</li>
<li>Linking to a CSS file without using <em>https://</em> while in secure mode</li>
<li>Linking to a JavaScript file without using <em>https://</em> while in secure mode</li>
</ul>
<p>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.</p>
<p>For this particular client, we checked for everything, literally everything: Are the images all linked to by using <em>https</em>? Are all CSS files properly included (also using <em>https</em>)? Are all JavaScript files included the right way (again, using <em>https</em>)? All our checks concluded that the website was clean, but why were all the browsers stating that there is a &#8220;mixed content&#8221; of secure and non-secure items. What wre those non-secure items and where are they?</p>
<p>We then applied the concept of <em>minimax elimination</em> to solve this problem: we saved an HTML copy of the checkout page of VirtueMart, we called it <em>test.html</em>, and then we uploaded it back to the Joomla website of our client. We then tested this page in <em>https</em> mode (by visting <em>https://www.ourclientswebsite/test.html</em>, 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 <em>https</em> 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 <em>YOOtheme</em> 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 <em>YOOtheme</em> templates):</p>
<p><code>&lt;link rel="stylesheet" href="css:styles/plain-blue.css" type="text/css"/&gt;<br />
&lt;link rel="stylesheet" href="css:styles/color-blue.css" type="text/css"/&gt;<br />
&lt;link rel="stylesheet" href="css:styles/plain.css" type="text/css"/&gt;</code></p>
<p>The way the CSS files were included (<em>href=&#8221;css:styles/plain.css&#8221;</em>) was the culprit behind the mixed content on the VirtueMart checkout page.</p>
<p><strong>What we did to solve the problem</strong></p>
<p>We created a condition to hide the above CSS files (they didn&#8217;t have any effect on the look&amp;feel of the website anyway) in the following template file:  <em>/public_html/templates/yoo_vanilla_j15/layouts/template.config.php</em>. Here&#8217;s the code that we added (it is in <strong>bold</strong>):</p>
<p><code><br />
//include these files when not in https mode<br />
<strong>if ($_SERVER['HTTPS'] != "on"){</strong></p>
<pre>
	$this-&gt;warp-&gt;stylesheets-&gt;add("css:styles/{$style}-{$bgcolor}.css");
	$this-&gt;warp-&gt;stylesheets-&gt;add("css:styles/color-{$color}.css");
	$this-&gt;warp-&gt;stylesheets-&gt;add("css:styles/{$style}.css");
</pre>
<p><strong>}</strong></code></p>
<p>As you can see, we are only including the problematic CSS files in non-https mode. </p>
<p><strong>What we have learned from this experience</strong>:</p>
<ul>
<li>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.</p>
</li>
<li>
<p>The designer/coder must always use relative links in his template rather than absolute links. That&#8217;s a given, but apparently there are many designers that still don&#8217;t do this.</p>
</li>
<li>
<p>Joomla always fascinates us with new challenges, but we consider these challenges fun and we&#8217;re happy when we&#8217;re working towards solving them!</li>
</ul>
<p>If you&#8217;re experiencing the same problem (you&#8217;re having a security warning on the VirtueMart checkout page), then try the above, but keep in mind that it most likely won&#8217;t apply to you (as it applies only to a very specific case), but you can use the minimax concept to locate the problem.</p>
<p>If you still need help resolving all these mixed content problems on your Joomla VirtueMart checkout, then we&#8217;re always here to help you. Just <a href="http://www.itoctopus.com/contact-us">contact us</a> and we&#8217;ll take it from there. Don&#8217;t worry, <a href="http://www.itoctopus.com/fees" title="Our fees!">our fees</a> are really, really reasonable!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/virtuemart-security-warning/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Add Google+ to Your Joomla Website</title>
		<link>http://www.itoctopus.com/how-to-add-google-to-your-joomla-website</link>
		<comments>http://www.itoctopus.com/how-to-add-google-to-your-joomla-website#comments</comments>
		<pubDate>Fri, 30 Dec 2011 18:11:39 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=975</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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+ <em>craze</em> the same way there was a Facebook Like craze a couple of years ago.</p>
<p>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 <em>social importance</em> of a page (how many times the page was liked, <em>plused</em>, tweeted, etc&#8230;) as a factor in its page ranking algorithm.</p>
<p>Now let&#8217;s get to the crust of the matter, how do you add Google+ to your Joomla website?</p>
<p>Well, it&#8217;s very simple, all you need to do is the following:</p>
<ul>
<li>Download the Google+ plugin (developed by itoctopus) from <a href='http://www.itoctopus.com/wp-content/uploads/2011/12/googleplus.zip' title="Google Plus Joomla Plugin">here</a> (file size is 1.3 KB &#8211; do not unzip to install)
</li>
<li>
<p>Install this plugin on your website:</p>
<ul>
<li>Login to your Joomla&#8217;s control panel using a super administrator account</li>
<li>Click on <em>Extensions</em>, <em>Install/Uninstall</em> on the upper menu</li>
<li>Click on <em>Browse</em> next to <em>Package File</em> and then choose the <em>googleplus.zip</em> file from your computer</li>
<li>Click on <em>Upload File &#038; Install</em></li>
<li>You should see the following messages if the install is successful:
<ul>
<li><em>Install Plugin Success</em> (just below the <em>Extension Manager</em> header) and</li>
<li><em>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.</em> below the above message</li>
</ul>
</li>
</ul>
</li>
<li>
<p>Activate this plugin on your website:</p>
<ul>
<li>Go to <em>Extensions</em>, <em>Plugin Manager</em> and click on the red icon next to <em>googleplus</em> on your website.</li>
</ul>
</li>
<li>
<p>You&#8217;re done! You should now be able to see the Google+ widget on all your content pages!</li>
</ul>
<p>If you&#8217;re having problems with this plugin or if you want to tweak it, then feel free to <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>, and we&#8217;ll have help you. Note that <a href="http://www.itoctopus.com/fees" title="Our fees!">our fees</a> 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&#8217;ll do it for you (our reasonable fees will also apply).</p>
<p>Quick thing to add: Our Google+ Joomla plugin is very light, it doesn&#8217;t add unnecessary overhead to your website and it doesn&#8217;t promote our business in any way. We hope you&#8217;ll find it useful!</p>
<p><em>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.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/how-to-add-google-to-your-joomla-website/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joomla Technicians at Your Service</title>
		<link>http://www.itoctopus.com/joomla-technicians-at-your-service</link>
		<comments>http://www.itoctopus.com/joomla-technicians-at-your-service#comments</comments>
		<pubDate>Wed, 28 Dec 2011 15:25:43 +0000</pubDate>
		<dc:creator>Fadi</dc:creator>
				<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://www.itoctopus.com/?p=966</guid>
		<description><![CDATA[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&#8217;ll be able to fix it for you, even if it&#8217;s midnight. You can call us anytime!)
Your website is functioning, but there are some pages that [...]]]></description>
			<content:encoded><![CDATA[<p>As a Joomla website owner/manager, it might be that you need a Joomla technician because:</p>
<ul>
<li>Your whole website is down and you need it up as soon as possible. (Note: We&#8217;ll be able to fix it for you, even if it&#8217;s midnight. You can call us anytime!)</li>
<li>Your website is functioning, but there are some pages that are showing errors.</li>
<li>You are experiencing some technical issues with your website, including, but not limited to: caching issues, SEF issues, etc&#8230;</li>
<li>Your website is hacked and now it tries to download viruses to your visitors&#8217; PCs.</li>
<li>You have a problem in your template and you need to fix it immediately.</li>
<li>You want to move from Joomla 1.5 to a higher version of Joomla. (Joomla migration)</li>
<li>An extension that you&#8217;re trying to install on your website is not installing properly.</li>
<li>You want a custom Joomla extension to satisfy your specific business needs.</li>
<li>You are about to have your website audited (for PCI, for example) and you need to ensure that your website meets all the requirements.</li>
<li>You want to enhance the speed of your website.</li>
<li>You want to ensure that your website is secure enough to face any potential threats.</li>
<li>You want to integrate e-commerce on your website seamlessly and in the shortest time possible.</li>
<li>You want to modify the core Joomla installation to suit your business needs.</li>
<li>&#8230;the list is endless!</li>
</ul>
<p>Now that you have established your need for a Joomla technician, you start wondering where to find one&#8230; 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 <em>always</em> find a solution to your problem! Not only that, they often have multiple solutions to your problem (and you&#8217;ll be the one to choose which solution they should go for)! They also will offer you recommendations in terms of enhancing your website&#8217;s speed, security, and even attracting more traffic!</p>
<p>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&#8217;t have any communication problem with them, they will understand what you mean and what you want from the first time!</p>
<p><a href="http://www.itoctopus.com/fees" title="Our fees!">The rate</a> 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, <a href="http://www.itoctopus.com/contact-us" title="Contact us!">contact us</a>, 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!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itoctopus.com/joomla-technicians-at-your-service/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

