web-dev-qa-db-fra.com

Le plugin Joomla simple ne fonctionne pas

Je suis nouveau à Joomla. La première fois que je crée un plugin. J'essaie de créer un nouveau plugin, mais cela ne fonctionne pas. Les événements n'ont pas réagi.

Joomla version 3.4.8. PHP 5.6

Mon code

plgcontenttitlere.php

    defined( '_JEXEC' ) or die;
jimport('joomla.plugin.plugin');
echo 'test'; // WORKING!
class plgContentTitlere extends JPlugin
{
    protected $autoloadLanguage = true;

    function __construct( &$subject , $config ) {
    parent::__construct($subject, $config);
         echo 'TEST'; // DOESN"T WORK!
    } 
     public function onContentPrepare($context,&$row, &$params, $limitstart) {
          echo 'TEST'; // DOESN"T WORK!
    }
}

Fichier plgcontenttitlere.xml

<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="content" method="upgrade">
    <name>Content - TitleRe</name>
    <creationDate>March 2016</creationDate>
    <copyright>Copyright (C) 2016 - Vektor Media. All rights reserved.</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <version>0.1.0</version>
    <files>
        <filename plugin="plgcontenttitlere">plgcontenttitlere.php</filename>
        <filename>index.html</filename>
    </files>
    <config>
    </config>
</extension>

Comme vous pouvez le voir avant le plugin echo 'test' l'oeuvre. Mais à l'intérieur cela ne fonctionne pas. error_reporting n'affiche pas d'erreur

3
Jawlon Rodriguez

La convention de nommage des fichiers du plugin doit être correcte. C'est peut-être pour cette raison que votre classe de plug-in ne rend pas le rendu. Voir l'exemple ci-dessous:

Fichier de plug-in: nameofplugin.php

class plgContentNameofplugin extends JPlugin {
 //plugin code
}

Fichier XML: nameofplugin.xml

<files>
   <filename plugin="nameofplugin">nameofplugin.php</filename>
</files>

Veuillez vous référer au lien suivant pour plus de détails:

https://docs.joomla.org/J3.x:Creating_a_content_plugin

Voir les modifications ci-dessous que vous devez faire:

  • Renommez les 2 fichiers comme suit: titlere.php et titlere.xml
  • Dans titlere.xml, modifiez ce qui suit:

    <files> <filename plugin="titlere">titlere.php</filename> <filename>index.html</filename> </files>

  • Compressez les fichiers pour l'installer et vérifiez ou modifiez les fichiers installés et vérifiez.

Raison: vous nommez ainsi plgcontenttitlere, ce qui est faux car plg indique le type de plugin, content dénote le type de contenu et titlere est le nom de votre plugin et par conséquent, les fichiers doivent être nommés de cette façon.

4
Liz.

Je ne suis pas un expert, mais je vais essayer de souligner quelques points.

1) En regardant votre code, le problème (je suis à peu près sûr) est que l'écho ne va pas quelque part. Si onContentBeforeDisplay ressemble à onContentPrepare, votre code devrait alors ressembler à ceci:

$row->text="test".$row->text;

Je suppose que c'est vraiment ton problème.

2) Sans voir le manifeste du plugin, c'est vraiment impossible à dire. J'ai fait des choses comme oublier un fichier du manifeste, puis que ça ne fonctionne pas.

0
George Sexton