web-dev-qa-db-fra.com

Remplacement d'une classe par un plugin personnalisé

J'essaie de créer un plugin pour remplacer une classe Joomla, ce qui est impossible autrement. Voici mes codes:

comoverride.xml

  <files>
    <filename plugin="comoverride">comoverride.php</filename>
    <filename>comoverride.xml</filename>
    <filename>index.html</filename>
  </files>
  <config>
  </config>
</extension>

(j'ai bien sûr mes informations dans mon tag et les autres informations nécessaires)

comoverride.php

<?php



defined( '_JEXEC' ) or die( 'Restricted access' );
if(!defined('DS')) define('DS', DIRECTORY_SEPARATOR);
jimport('joomla.application.component.helper');
class comcontent 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()) {
            $template = $app->getTemplate();

             require_once(JPATH_SITE.'/templates/'.$template.'/code/com_content/models/articles.php');

        }
    }  

J'essaie de remplacer le fichier articles.php, où se trouve la classe "ContentModelArticles". mais cela ne semble pas fonctionner du tout malheureusement.

Quelqu'un peut-il s'il vous plaît tester pour moi?

1
Peter

jetez un coup d'oeil dans les prochains extraits. Ça marche clairement

plugins/system/comoverride/comoverride.xml

<?xml version="1.0" encoding="utf-8"?>
<extension  version="3.4" type="plugin" group="system" method="upgrade">
<name>plg_system_comoverride</name>
<author>JProof</author>
<creationDate>Februar 2009</creationDate>
<copyright>(C) 2010 Romacron. All rights reserved.</copyright>
<license>GNU/GPL</license>
<version>3.0.0</version>
<files>
    <filename plugin="comoverride">comoverride.php</filename>
    <filename>comoverride.xml</filename>
    <filename>index.html</filename>
</files>
<config>
</config>
</extension>

/plugins/system/comoverride/comoverride.php

defined('_JEXEC') or die('Restricted access');
if (!defined('DS')) {
    define('DS', DIRECTORY_SEPARATOR);
}
jimport('joomla.application.component.helper');

class PlgSystemComOverride extends JPlugin
{

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

    public function  onAfterRoute()
    {
        $app = JFactory::getApplication();
        if ('com_content' === $app->input->getCmd('option') && !$app->isAdmin()) {
            $template = $app->getTemplate();

            require_once(JPATH_SITE . '/templates/' . $template . '/code/com_content/models/articles.php');

        }
    }
}

J'espère que ça vous aide

2
JProof