Let's say I wan't to override a community module named Aaa_Aaa with local module named Zzz_Zzz. It seems that no matter what I do, my local module loads after the community one, so the community module is matched first. I tried this:
<frontend>
<routers>
<aaa_aaa>
<args>
<modules>
<zzz_zzz before="Aaa_aa">Zzz_Zzz</zzz_zzz>
</modules>
</args>
</aaa_aaa>
</routers>
</frontend>
app/code/local/Zzz/Zzz/controllers/IndexController.php
<?php
require_once Mage::getModuleDir('controllers','Aaa_Aaa') . DS . 'IndexController.php';
class Zzz_Zzz_IndexController extends Aaa_Aaa_IndexController
{
public function indexAction()
{
//doesn't get to this
}
}
app/etc/modules/Zzz_Zzz.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Zzz_Zzz>
<active>true</active>
<codePool>local</codePool>
</Zzz_Zzz>
<Aaa_Aaa>
<active>true</active>
<codePool>community</codePool>
<depends>
<Zzz_Zzz />
</depends>
</Aaa_Aaa>
</modules>
</config>