-
-
Save dongilbert/3237387 to your computer and use it in GitHub Desktop.
| <?php | |
| /** | |
| * @package Joomla.Plugin | |
| * @subpackage System.Overrides | |
| * | |
| * @copyright Copyright (C) 2012 Don Gilbert. All rights reserved. | |
| * @license GNU General Public License version 2 or later; see LICENSE | |
| */ | |
| define('OVERRIDES', dirname(__FILE__).'/overrides'); | |
| // Use JLoader to register all the classes you want to override | |
| JLoader::register('JClassToOverride', OVERRIDES.'/libraries/joomla/class/to/override.php', true); |
| silence is golden |
| <?php | |
| /** | |
| * @package Joomla.Plugin | |
| * @subpackage System.Overrides | |
| * | |
| * @copyright Copyright (C) 2012 Don Gilbert. All rights reserved. | |
| * @license GNU General Public License version 2 or later; see LICENSE | |
| */ | |
| defined('JPATH_BASE') or die; | |
| /** | |
| * System plugin to override core classes terms. | |
| * | |
| * @package Joomla.Plugin | |
| * @subpackage System.Overrides | |
| * @since 2.5 | |
| */ | |
| class PlgSystemOverrides extends JPlugin | |
| { | |
| /* We do our thing in the __construct method | |
| * so that our overridden classes will be | |
| * available everywhere | |
| */ | |
| public function __construct(&$subject, $config) | |
| { | |
| parent::__construct($subject, $config); | |
| include_once 'config.php'; | |
| } | |
| } |
| <?xml version="1.0" encoding="utf-8"?> | |
| <extension version="2.5" type="plugin" group="system" method="upgrade"> | |
| <name>plg_system_overrides</name> | |
| <author>Don Gilbert</author> | |
| <creationDate>Aug 2012</creationDate> | |
| <copyright>(C) 2012 Don Gilbert. All rights reserved.</copyright> | |
| <license>GNU General Public License version 2 or later; see LICENSE.txt</license> | |
| <authorEmail>[email protected]</authorEmail> | |
| <authorUrl>www.electriceasel.com</authorUrl> | |
| <version>2.5.6</version> | |
| <description>This plugin will override classes contained in the included config file.</description> | |
| <files> | |
| <filename plugin="overrides">overrides.php</filename> | |
| <filename>config.php</filename> | |
| <filename>index.html</filename> | |
| <folder>overrides</folder> | |
| </files> | |
| </extension> |
This is very useful. Thanks very much.
A tip for anyone wanting to override one class from a larger namespace: use the whole namespace with the name of the class in the register() definition in config.php. For example I wanted to override Community Builder's UserTable class only,
JLoader::register('CB\Database\Table\UserTable', OVERRIDES.'/libraries/CBLib/CB/Database/Table/UserTable.php', true);
hello noob question... with this plugin is posible to override JApplicationSite? i tried and didn't work ..
this is what i did
class PlgSystemOverrides extends JPlugin
{
/* We do our thing in the __construct method
* so that our overridden classes will be
* available everywhere
*/
public function __construct(&$subject, $config)
{
parent::__construct($subject, $config);
//Load config file only at frontend
$app = JFactory::getApplication();
if($app->isSite()) {
// Use JLoader to register all the classes you want to override
JLoader::register('JApplicationSite', '/baseappi_core/libraries/cms/application/site.php', true);
}
}
Plugin folder structure is the following:
overrides
---baseappi_core
------- libraries
---------- cms
-------------application
----------------site.php
---install.script.php
---index.html
---overrides.php
---overrides.xml
Life Saviour! ;-)
Fanksss!
(Works on J!3.x too!)