2017-09-15 5 views
1

新しい記事を保存した後にメールを送信するonContentAfterSaveイベントを使用してJoomlaプラグインを開発しています。Joomla:onContentAfterSaveが記事のために起動されていません

イベントは、新しいメニュー項目または新しいカテゴリを保存するとトリガーされます。 ですが、新品ではありません。

Joomla! 3.7.5

public function onContentAfterSave($context, $article, $isNew){ 
    $link = JRoute::_(ContentHelperRoute::getArticleRoute( $article->id, $article->catid)); 

    $mailer = JFactory::getMailer(); 
    $config = JFactory::getConfig(); 
    $sender = array( 
     $config->get('mailfrom'), 
     $config->get('fromname') 
    ); 
    $mailer->setSender($sender); 


    $user = JFactory::getUser(); 
    $recipient = $user->email; 

    $recipient = array($recipient); 
    $mailer->addRecipient($recipient); 

    $body = '<p>Bonjour</p>' 
       .'Un nouveau <a href="'.$link.'">article</a> a été ajouté.'; 
    $mailer->isHtml(true); 
    $mailer->Encoding = 'base64'; 

    $mailer->setSubject('Nouveau article - BBN Times'); 
    $mailer->setBody($body); 


    $send = $mailer->Send(); 

    if ($send !== true) { 
     echo 'Error sending email: '; 
    } else { 
     echo 'Mail sent'; 
    } 

    return true; 
}  

答えて

0

onContentAfterSaveは、それがどのコンテンツ省によってトリガされなければならないことを意味する、Joomlaのコアによって、そしてない拡張子のモデルによってトリガーされます。

私はそれはあなたのケースでトリガされていない理由は2つの理由を考えることができます。

  • あなたのコンストラクタの条件が拡張タイプをチェックし、唯一特定の拡張子は、そのイベントを使用できるように持っている(または他のどこかあなたのプラグインで)。
  • 上記のコードでエラーが発生しました。
+0

私のプラグインは、すべてのタイプ(メニュー、カテゴリ...)に適していますが、記事タイプでは機能しません。実際に私はこの条件を使用します if($ isNewとin_array($ context、array( 'com_content.article'、 'com_content.form'))) – emwww

関連する問題