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
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:
Voir les modifications ci-dessous que vous devez faire:
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.
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.