it-swarm.com.de

Joomla 3 onContentAfterSave funktioniert nicht im Backend

Ich möchte onContentAfterSave im Joomla-Backend verwenden, aber es funktioniert nicht.
Mein Code ist:

class plgContentTest extends JPlugin
{

public function onContentAfterSave($context, &$article, $isNew)
{
    $option = JRequest::getVar('option');

    if($option=='com_content'){

        echo 'Test';

     }

   }

}

onContentAfterSave arbeitet nicht am Backend?

1
saber

Wenn Sie beim Speichern testen, kann es sein, dass ein Echo nie angezeigt wird, da mit ziemlicher Sicherheit eine Umleitung nach dem Speichern ausgelöst wird. Fügen Sie also einen Exit hinzu. um zu überprüfen, ob es wirklich nicht feuert:

class plgContentTest extends JPlugin
{
    /**
    * Loads the application object
    *
    * @var    JApplicationCms
    * @since  3.2
     */
    protected $app = null;

    public function onContentAfterSave($context, &$article, $isNew)
    {
        $option = $this->app->input->get('option');

        if ($option=='com_content')
    {
            echo 'Test';
            exit;
        }

    }

}

Beachten Sie, dass JRequest veraltet ist und Sie jetzt das Joomla-Anwendungsobjekt einfügen können, indem Sie es als geschützte Eigenschaft deklarieren.

2
Rob Clayburn

Überprüfen Sie folgende Dinge:

  • Der Name der Plugin-Klasse sollte lauten: plgContentTest
  • Die Plugin-Klasse sollte die Klasse JPlugin erweitern
  • Der Dateiname des Plugins sollte lauten: test.php
  • Plugin-Datei sollte in sein: /plugins/content/test
  • Der Dateiname der XML-Definition für das Plugin sollte lauten: test.xml
  • Die XML-Definitionsdatei des Plugins sollte sich in folgendem Verzeichnis befinden: /plugins/content/test
  • Das Plugin sollte installiert und aktiviert sein

Einige andere Tipps:

Sie sollten den Kontext überprüfen, keine direkte Anfrage:

if ($context != 'com_content.form') {
    return true;
}

Hier finden Sie ein Beispiel für ein Inhalts-Plugin: / plugins/content/joomla

Sie sollten eine Artikelvariable wie diese definieren $article, Nicht diese &$article.

Es wäre auch schön, wenn Sie die Verzeichnisstruktur Ihres Plugins angeben würden.

2
Artur Stępień

Die meisten Probleme mit Content-Plugins werden durch den Namen des Plugins verursacht. Wenn es nicht korrekt benannt und installiert ist, kann Joomla es nicht finden und ruft onContentAfterSave auf.

Beispiel Finder Plugin:

  • Es wird im Ordner plugins/content/Finder installiert.
  • Das Plugin heißt Finder.php
  • Die Klasse ist PlgContentFinder (erweitert JPlugin)
  • Es verfügt über die Funktion onContentAfterSave
1
Anibal