This article will give an overview of Magento extension clashes (sometimes called conflicts) and then run through a few ways you can find them in your installation.
I get asked at least once a week a question like ‘What is a Magento Extension Clash‘ or ‘How Do I Find Extensions that Conflict‘. So, if you’re reading this, you probably just asked me, and I probably just sent you a link to here. That was a bit meta-blog, sorry about that. On with the article.
What is a Clash?
Magento extensions can override core functionality using what’s called a class rewrite. That’s when your extensions configuration file tells the core of Magento to use your custom PHP class, instead of the core one. Typically the custom class will sub-class the core one, and only override the methods that need to be changed. Here’s an example of that, firstly showing a snippet of rewrite xml for a core model:
<!-- ... snip config.xml ... --> <models> <core> <rewrite> <email>Aschroder_Email_Model_Email</email> </rewrite> </core> </models> <!-- ... snip config.xml ... --> |
And then the corresponding class, notice it overrides the core version:
class Aschroder_Email_Model_Email extends Mage_Core_Model_Email { // only add methods here that override the ones we want to change in Mage_Core_Model_Email } |
So that’d all be well and good if everyone only installed my email extension in their Magento store, but they don’t. They install PDF email attachments, email emoticons, email monkeys and god knows what else. So the rewrite that my extension needs to work, may very well not happen, because another extension rewrites the same class.
The same sorts of things can happen all over Magento, and typically the bigger and more complex and extension is, the more rewrites it will need, and the bigger the surface area for conflicts and clashes.
You might be thinking: “Gosh, it’d be great if Magento Connect ran some sort of rudimentry test for compatibility before installing extensions willy-nilly in Magento Stores” and if you are, that means you’re one of the Good Guys™.
Continue reading Understanding and Detecting Magento Extension Clashes or Conflicts