Trash Joomla Article en frontend


9

Je développe un petit plugin pour Joomla 3.x qui ajoute un bouton "Trash article" lorsque vous êtes dans Joomlas Frontend. Voir capture d'écran ci-dessous.

http://imgur.com/NYLGRdY

Maintenant, j'ai cet appel AJAX qui se produit lorsque vous cliquez sur l'élément de liste.

Voici le code:

request = {
          "option" : "com_ajax",
          "plugin" : "deletearticle"
          "data"   : "test",
          "format" : "raw"  
};

$.ajax({
       type : "POST",
       data : request,
       success: function (response) {
           $("p:first").html("Data: " + response)
      } 
});

Et le fichier PHP d'assistance.

<?php 
 jimport('joomla.plugin.plugin');
 class plgAjaxDeletearticle extends JPlugin
 {
    function onAjaxDeletearticle()
    {
        $controller = JControllerLegacy::getInstance('Content');
        $controller->execute(JFactory::getApplication()->input->get('task'));
    }
 }

Je fais en ce moment une expérience de travail et j'ai demandé à mon mentor comment changer l'état de l'article en corbeille. Et il m'a donné le code à l'intérieur de la fonction et m'a dit que je devrais pouvoir le modifier d'une manière ou d'une autre, afin que le contrôleur exécute une fonction de sauvegarde sur l'article.

J'ai essayé et lu sur ce genre de choses, mais cela ne semble pas être bien documenté. Toute aide serait grandement appréciée car je ne sais pas trop comment procéder.

Merci.

Réponses:


9

Tout d'abord, vous devez transmettre l'ID de l'article à votre demande. Ensuite, vous pouvez utiliser la JTableclasse pour mettre à jour l'état:

public function onAjaxDeletearticle()
{
    // Get id from the request
    $id = JFactory::getApplication()->input->getInt('data');

    // Get the new instance of #__content table
    $table = JTable::getInstance('content');

    // Load the article data by id
    $table->load($id);

    // Set the state to 'trashed'
    $table->state = -2;

    // Store the article
    $table->store();
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.