How to override the component mvc from the Joomla! core
m (spelling/grammar) |
m |
||
| Line 4: | Line 4: | ||
<code> | <code> | ||
| − | class plgSystemComContentOverride extends JPlugin { | + | class plgSystemComContentOverride extends JPlugin { |
| − | + | ||
public function __construct(&$subject, $config = array()) { | public function __construct(&$subject, $config = array()) { | ||
parent::__construct($subject, $config); | parent::__construct($subject, $config); | ||
Revision as of 09:37, 22 March 2012
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