Actions

How to override the component mvc from the Joomla! core

From Joomla! Documentation

Revision as of 08:17, 22 March 2012 by Hils (Talk | contribs)

There may be times when you need to override the Joomla! MVC Component to add new functionality or to completely customise the component. The MVC component can be completely overridden by using the same class names that are used in the component. This is achieved by loading a system plugin before the component is dispatched by the application.

You can create your own plugin to do this.

class plgSystemComContentOverride extends JPlugin {

      public function __construct(&$subject, $config = array()) {
         parent::__construct($subject, $config);
     }

     public function onAfterRoute() {
         $app = JFactory::getApplication();
         if('com_content' == JRequest::getCMD('option') && !$app->isAdmin()) {
             require_once(dirname(__FILE__) . DS . 'comcontentoverride' . DS . 'my_content_controller.php');
         }
     } 
}



In the examples below we are using an Override MVC plugin


Getting a head-start with overrides

You can override by templating or by application scope (frontend/backend).

Using a templating method

Override Base Component Controller

TEMPLATE_NAME/code/COMPONENT_NAME/CONTROLLER.php

Override Another Component Controller

TEMPLATE_NAME/code/COMPONENT_NAME/controllers/CONTROLLER_NAME.php

Override Models

TEMPLATE_NAME/code/COMPONENT_NAME/models/MODEL_NAME.php

Override Views

TEMPLATE_NAME/code/COMPONENT_NAME/views/VIEW_NAME/VIEW_NAME(.FORMAT).php

Using application scope method

You can override by creating a code folder in the base path from application.

Site General Override

code/COMPONENT_NAME/CONTROLLER.php

Override Another Component Controller

code/COMPONENT_NAME/controllers/CONTROLLER_NAME.php

Override Models

code/COMPONENT_NAME/models/MODEL_NAME.php

Override Views

code/COMPONENT_NAME/views/VIEW_NAME/VIEW_NAME(.FORMAT).php

Administrator General Override

administrator/code/COMPONENT_NAME/CONTROLLER.php

Override Another Component Controller

administrator/code/COMPONENT_NAME/controllers/CONTROLLER_NAME.php

Override Models

administrator/code/COMPONENT_NAME/models/MODEL_NAME.php

Override Views

administrator/code/COMPONENT_NAME/views/VIEW_NAME/VIEW_NAME(.FORMAT).php