I don't think there is a way to do this without removing the routers
tag from the config.xml
or adding some observers on the predispatch event that will redirect you to a 404 page.
But I may be wrong. In case I'm wrong here is a place to start.
The routers
section of the config.xml
files is parsed in Mage_Core_Controller_Varien_Router_Standard::collectRoutes
.
From what I saw in there, there is no check for a disabled
flag or something like that.
There might be a chance if the the module does not use the admin
path for backend pages.
So if the router is not declared like this:
<routers>
<adminhtml>
<args>
<modules>
<Module_Name before="Mage_Adminhtml">Module_Name_Adminhtml</Module_Name>
</modules>
</args>
</adminhtml>
</routers>
but uses the other way of declaring routers:
<routers>
<module_name>
<use>admin</use>
<args>
<module>Module_Name</module>
<frontName>route_name</frontName>
</args>
</module_name>
</routers>
You can create a module and just change the <use>
tag value to something that's not admin
or standard
.
So your new module that depends on the original one can have the routers section like this:
<routers>
<module_name>
<use>go-away</use>
</module_name>
</routers>
Why I thing it could work? because in the method mentioned above the only if
with no else
that could return false is if ($use == $useRouterName)
.
This is just an assumption. I haven't tested it. I don't have any extensions that use this type of routers for backend.
As all the comments stated before, its not out of the box.
Here are some hints on where/what you may need to adjust:
Mage_Admin_Model_User
public function getStartupPageUrl()
{
$startupPage = Mage::getStoreConfig(self::XML_PATH_STARTUP_PAGE);
$aclResource = 'admin/' . $startupPage;
if (Mage::getSingleton('admin/session')->isAllowed($aclResource)) {
$nodePath = 'menu/' . join('/children/', explode('/', $startupPage)) . '/action';
$url = (string)Mage::getSingleton('admin/config')->getAdminhtmlConfig()->getNode($nodePath);
if ($url) {
return $url;
}
}
return $this->findFirstAvailableMenu();
}
I have never tried it but this seems to be the method called from
Mage_Adminhtml_IndexController
and there is the IndexAction that calls the above function.
Since this is the admin, doing a rewrite of the Model will probably be easier.
/**
* Admin area entry point
* Always redirects to the startup page url
*/
public function indexAction()
{
$session = Mage::getSingleton('admin/session');
$url = $session->getUser()->getStartupPageUrl();
if ($session->isFirstPageAfterLogin()) {
// retain the "first page after login" value in session (before redirect)
$session->setIsFirstPageAfterLogin(true);
}
$this->_redirect($url);
}
So, modifying getStartupPageUrl() to have your URL seems very likely the best place to try this.
This is all theoretical, I have not tried it yet, but if you need a sample module, I can certainly run through this and provide it.
If every admin user will end up on the same page, its pretty easy to do, if there is some dynamic elements, it will be a bit harder to facilitate.
Good Luck!
Best Answer
In this case,you need use controller_action_predispatch event on
on this event you need redirection to admin url.
using below code:
condition: Current store is admin .Check by code: if
Mage::app()->getStore()->isAdmin()
Config.xml code:
observer code: