Actions

How to override the component mvc from the Joomla! core

From Joomla! Documentation

Revision as of 07:38, 22 March 2012 by Juliopontes (Talk | contribs)

There may be occasions where you would like to override the way a Joomla! Components MVC to add a little new functionality or complete customize a component. Component MVC can be overridden by using a class with same name as we have on a component and we need to loading by using a system plugin before component are dispatched by 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');
         }
     } 
}

On examples bellow we are using a Override MVC plugin

Getting a head-start with overrides

You can override by templating or by application scope(frontned/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 create a code folder on 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