How to Disable Article/Category Hit Tracking in Joomla 4/5

Almost 11 years ago, we published an article on how to disable hit tracking in Joomla. The process explained in that old article worked for Joomla 1.5, 1.6, 1.7, 2.5 and 3 (it didn’t work for Joomla 1.0 because the code in Joomla 1.0 was more of a spaghetti code than real code). The solution […]

How to Make Usernames in Joomla 4/5 Case Sensitive

Last week, we were tasked by a new client to make the usernames on their Joomla 5 website case sensitive. For example, they wanted to have something like “admin” and “Admin” as different usernames – this of course, means, that the logins are also case sensitive (in case you didn’t notice, by default, you can […]

How to Print a Joomla Query from PHP

So you’re working on a new extension, or in the Joomla core itself, and you’re using a DatabaseQuery object, and you want to print the query object as a SQL string. How do you do that? Well, assuming the name of the object is $query, there are 4 ways to do this: echo $query->__toString();: This […]

A Free, Simple, and Efficient Heartbeat System for Your Joomla Site

We monitor the Joomla sites of our enterprise clients – and we do not do so with the help of a paying 3rd party tool – we do so with a little tool that we developed ourselves. The tool is nothing fancy, but it works really well! Today, we are sharing full details about this […]

A Quick Guide to Optimizing Joomla 5 By Disabling Plugins

Note: It is important to know that your Joomla setup may require any of the plugins disabled below, so it’s a good idea (make that a mandatory idea) to test the whole website during off hours or on a test server each time you disable a plugin. As a followup to yesterday’s post, which concluded […]

Joomla 4 vs Joomla 5 – Which One Is Faster?

A very common question that we get from our clients who are hesitant to migrate to Joomla 5 is: “Does it run any faster than Joomla 4”? Our answer is: “We don’t know, but we’ll soon run some benchmarks and get back to you!” Well, we decided that soon is now. Here’s what we did […]

Joomla 4 Update Failing – Possible Cause

While trying to upgrade the Joomla websites for one of our clients to the latest Joomla 4 version, we ran into the infamous “red screen” Joomla error page with the following ambiguous error: “An error occurred”. This meant that the update didn’t work (duh), but, on the bright side, the website wasn’t broken either (e.g. […]

Errcode: 30 “Read-only file system” Fatal Error on Joomla 4 Site

Yesterday morning was unsettling to us – to say the very least, as were faced with a blank page when we were checking the homepage of a Joomla 4 website of one of our regular clients. Our first thought, of course, was to enable error reporting, so, we went to the login page of the […]

How to Check if a User Is Logged In from an External Script in Joomla 4

We were recently tasked with an interesting and what we thought was a simple task: a client asked us to write a script that checks if a user is logged in to a Joomla 4 website from an external website using Ajax. “Simple!” – we thought: we can just copy the code of the root […]

The Case Against Joomla’s “Redirect” Extension

Almost a decade ago, we explained how Joomla’s Redirect Manager extension works. Fast forward to now (April 2023), nothing really has changed; the system still works in the same weird and inefficient way in the latest version of Joomla (4.2.9 at the time of writing this article). But not only it is weird and inefficient, […]

Migrating K2 to Joomla 4 – Why We Gave Up!

Note: Needless to say, it is important that you backup your website before migrating to Joomla 4. Warning: Before migrating to Joomla 4 from Joomla 3, it is critical that K2 (as an extension) is completely disabled, otherwise, you will end up with a broken website and you will need to restart the migration from […]

“0 Missing field in database: Joomla\CMS\Table\Extension extension_id” Error on Joomla Website

Note: This post partly assumes that your server is running WHM/cPanel. Solutions may differ if your server is running a different platform. About a week ago, a client approached us and told us that they were having a problem on their corporate website, where they are seeing the following error: 0 Missing field in database: […]

Modulo by Zero Error when Migrating to Joomla 4

We are currently migrating a Joomla 3 website to Joomla 4. Among the hundreds of errors that we saw during the migration process, there was this one: Modulo by Zero This error was interesting, because it was just weird and very short. It meant that we were dividing by zero somewhere in the code, but […]

How We Blocked an IP from Accessing HubSpot Pages

It’s Saturday, and we received an interesting email from one of our clients. The client said that someone was manually spamming their HubSpot forms with odd data. HubSpot is good at blocking spammers, but manual spam is really hard to catch. The client asked us to block this person from accessing their HubSpot pages. There […]

How to Disallow Google from Indexing Your HubSpot Gated Documents

Here’s a common scenario: you create a HubSpot landing page with a form. Once people fill in that form, they are redirected to a gated document (possibly an e-book or a whitepaper). The system is simple and works flawlessly, you are happy, and your client is happy! A few weeks later, your clients emails you […]

The Elusive “Thank You” Message On HubSpot Forms

Say you have a HubSpot form that you want people to fill in. The HubSpot form that you have is very long with many input fields that you need for your business. You embed it on one of your pages and then you send out an email with a link to that page. People fill […]

How Leads Can Download Multiple Gated Assets with One HubSpot Form

Here’s the problem: A client of ours has many gated whitepapers on HubSpot, and they wanted to group them into pages where each page contains the related whitepapers, by topic. So, in essence, the HubSpot landing page consists of a simple lead generation form which, at the end, contains a checkbox list consisting of whitepaper […]

How We Created a Multi-Step Form in HubSpot

As you may already know, HubSpot only allows for single-step forms. They don’t have a built-in function to create multi-step forms. They do advertise a workaround, which is creating two landing pages, each containing a form with a set of fields, where the first page, when submitted, is redirected to the second page using the […]

How We Added HubSpot Pages As Events in Google

A client of ours asked us to list some of their HubSpot pages as virtual events in Google. These pages were mainly webinar registration forms. To the untrained eye, the task seems to be very simple, because it consists of simply adding some structured data in the HTML as described by Google here. In reality, […]

Increasing K2’s Limit to More than 100 Items

While working on a Joomla website powered by K2, we noticed that one of the pages, containing a big list of company names, is only limited to display the first 100 companies. We checked the backend of the Joomla website, and the limit was set to display 1,000 items for that particular category. We increased […]

Joomla’s Biggest Drawback: Sorting

We manage very large Joomla installations, and a constant question we get from editors working on these websites is: “I am trying to order articles on my website, but it is not working, how do we do that?” And then we start to explain that first they need to choose the category when listing articles […]

Our New Passion: Integrations

For the past decade, our (almost) exclusive focus was the Joomla product. However, in the past few years, we suffered from an increasing appetite to a specific marketing niche: integrations. We tried to stem this appetite by avoiding such jobs as much as we can, we tried to quench it by taking as many integrations […]

Weird Error While Updating a Joomla Website

While trying to update a Joomla website to the latest version we encountered the following weird error: Could not open /home/[user]/public_html/administrator/modules/mod_latestactions/mod_latestactions.xml for writing At first glance, we didn’t know what that error was because we didn’t know that the module mod_latestactions existed in Joomla. A quick research revealed that this was a new module and […]

Adding Complex Logic to HubSpot Emails

One of HubSpot’s powerful features is the ability to have a workflow send an email. Typically, the workflow contains the logic (if-then-else), and the email contains some dynamic data, such as the first name of the person, the title of the person, the company that the person works in, etc… However, the email cannot contain […]

How We Are Handling Traffic from Bots

An emerging and an extremely annoying issue that (almost all) large websites are currently experiencing is bot traffic. Of course, bot traffic has always been an issue, but it was, to a certain extent, manageable and way less vexing. However, recently, bot traffic has become very aggressive, especially on high traffic websites. So why this […]

Filtering Out Bad/Bot Traffic in Google Analytics

A couple of weeks ago, we received an interesting email from the marketing team of a high traffic Joomla website: they told us that their traffic in Google Analytics was increasing substantially, and while they were excited about the issue, they were thinking that it was too good to be true, and so they wanted […]

Before Optimizing Your Joomla Website

At itoctopus, we have optimized many, many Joomla sites and we have written many articles on optimizing Joomla sites. But, before optimizing any Joomla website, we do check/ask about the server powering the website. If we think the server is too weak for our beloved CMS, then we recommend that the client upgrade to a […]

“0 – Using $this when not in object context” Joomla Error After Updating to PHP 7.1+ – How to Handle

After updating PHP through EasyApache 4 to PHP 7.3 and then changing the PHP version in the MultiPHP Manager to 7.3, we encountered the following error on a Joomla website: 0 – Using $this when not in object context A fast research revealed that this problem was caused by some legacy code in the template, […]

The Ideal Server for a Large Joomla Website

We are currently moving a large client of ours to a very powerful server, and we thought it would be a good idea to share the hardware specifications of said server with our lovely readers (all 1 billion of them!). Without further ado, here they are: Intel Dual Xeon Gold 6130 (32 cores): This dual […]

Load Issues on Your Joomla Site? Maybe it’s Clamd!

One of our clients was having serious load issues on their Joomla website during peak hours. At first, we thought it was MySQL – but further investigation revealed another, more subtle culprit: it was clamd, yes, the seemingly innocent virus scanner, was the root cause of the problem. To make a long story short (is […]

The Importance of Checking the “lfd.log” File

A substantial portion of our work for our managed clients consists of monitoring their servers, and a large part of that monitoring consists of checking the logs, and seeing if there is anything unusual about them. We check all the pertinent logs, but there is one log file that is really close to our hearts, […]

Joomla MySQL Database Unexpectedly Goes Down

We had a weird error yesterday morning. A client emailed us and told us that his Joomla website stopped working all of a sudden, and it was displaying a blank page. We checked his Joomla website and we checked the logs, and it didn’t take us long to discover that the problem was with the […]

4 Reasons Why Your Joomla Article Updates Are Not Reflecting Immediately

During the past 13 years, we had our fair cases where updates to Joomla articles were not reflecting immediately. We have finally decided to make a quick list containing the 4 reasons of why your changes to a Joomla article are not reflecting or are reflecting but not immediately (it only took us 13 years […]

“End of script output before headers: index.php” Error on Joomla Site

A non-regular client of ours, after updating their Joomla website to 3.9.1 a couple of weeks ago, started seeing the following classical error on their homepage: Internal Server Error What was interesting was 2 things: 1) the error didn’t happen immediately after the update, but rather a few hours later, and 2) the error disappeared […]

How We Modified the Joomla Search Plugin to Include Synonyms

We were commissioned by the marketing department of a global education website to enhance the Search plugin of their Joomla website. In essence, they wanted us to include the synonyms of a word in the search results. For example, if someone types in the word “house”, we also include the words “home”, “residence”, etc… At […]

“[] operator not supported for strings” Error on Joomla sites

A regular client of ours contacted us this morning telling us that after updating PHP from 5.6 to 7.2 on his server, he saw the following fatal error on the homepage of his company website: [] operator not supported for strings. We did see this problem before on another client’s Joomla site, and it was […]

How to Identify Contacts Who Downloaded a File from a HubSpot Page

If you are an avid reader of our blog, you will notice that our main focus is currently on 3 things: security, performance, and marketing. Marketing is an extremely vast domain and our clients always have exciting challenges for us. For example, we just finished working on a huge HubSpot-Tealium-Constant Contact integration project. Essentially, the […]

Joomla’s Search Results Have <span class=”highlight”> – How to Fix!

A client of ours emailed us this morning and told us that the search functionality on their website is acting funny, and asked us to take a look. So, we tested the search by entering a term relevant to the client’s business, and we noticed that many titles in the search articles had something like […]

How to Load JavaScript Files Asynchronously in Joomla 3.8

In this day and age, most web developers out there want to load everything asynchronously – you know – just to please Google, despite the fact that loading JS files asynchronously may result in some erratically unpredictable behavior. In fact, from an SEO perspective, ensuring that the website looks good on mobile devices is an […]

DFP Ad Targeting with HubSpot on a Large Joomla Website

An exciting project that we have just finished is DFP (now Google Ads) ad targeting using HubSpot on a large Joomla website. In short, here’s how the system works: Someone visits the Joomla website and fills in a HubSpot form – the person is automatically assigned a hubspotutk which is associated to his HubSpot profile. […]

“The parameter platforminfo.class must be defined.” Error on Joomla

A new client called us a couple of days ago telling us that he successfully updated the Joomla website of the company he works in, however, he told us that they had to revert back because of some issues on the website resulting from the update. He told us that after reverting back, he saw […]

Seeing Gibberish when Trying to Update a Joomla Website

A client called us yesterday morning and told us that they were having issues trying to update their Joomla website. They didn’t give us any details, they just told us that they were seeing an error and that they wanted our help. As usual, we gratefully and immediately obliged… We logged in to the backend […]

How to Share a Database Table Across Different Joomla Websites

We know, we’ve been lazy this month, as this is our first article and it’s now the 31st – but, we were working on exciting projects so rest assured that we’ll make it up to you in the next month. One of the exciting projects that we worked on was the sharing of a database […]

How to Truncate a Table Using Joomla’s Database Abstraction Layer

We know, you’ve always dreamt of truncating a database table using the Joomla database library, but you didn’t know how to do that, so you used the following code instead: $db = JFactory::getDbo(); $sql = ‘TRUNCATE TABLE `mytable`’; $db->setQuery($sql); $db->execute(); The above code works, but it doesn’t say much about your Joomla skills. A cleaner […]

Protecting Joomla’s Files and Directories from Accidents

A few days ago, a managed client of ours called us and told us that their website stopped working, and that that event coincided when an employee was trying to upload a file to the images folder using FileZilla. We immediately knew what the issue was, as it happened to another client of ours a […]

A Custom Module Is Always Better than a Joomla Plugin

When a Joomla developer is asked to add some JavaScript tracking code to a Joomla website, he typically codes a content plugin in order to achieve this result. This, of course, works. But, it’s a very inefficient way of doing things. Why? Because this can be done easily with a custom HTML module and a […]

Your PHP Changes Are Not Showing on Your Joomla Website? Maybe It’s OPCache

Earlier today, we ran into a very weird issue… We were making some changes to a cron PHP file (under the cli folder), but our changes were not taking effect. This was very odd because we were sure that no caching was enabled anywhere on the server, at least so we thought. What was odd […]

How to Implement DFP Ad Targeting on Joomla Sites

Lately, we have been working increasingly on marketing (from a very technical perspective), specifically on ad targeting. Essentially, our clients are being pressured by their own clients to target visitors with matching ads. For example, if someone is a big reader of car articles on a news website, then he will be targeted with car […]

5 Disadvantages of Using a Custom Made CMS Rather than Joomla

One of our non-regular Joomla clients revealed to us their wish to build their own CMS. They told us that the number one reason why they’re doing this is because maintaining a large Joomla website is very costly. They also cited other reasons, including having to go through the trouble of updating their site every […]

The Apple Touch Icon Files and Joomla Performance

If you want to see something interesting, then do the following: ssh to the server hosting your Joomla website. Change to the domlogs folder. Run the following grep on the main log file of your domain: grep ‘MobileSafari’ yourjoomlawebsitelogfile.txt > mobilesafari-log.txt After doing the last step, you should have a mobilesafari-log.txt file in your current […]