Kosz Joomla Artykuł w interfejsie

9

Tworzę małą wtyczkę do Joomla 3.x, która dodaje przycisk „Artykuły o koszu”, gdy jesteś w Joomlas Frontend. Zobacz zrzut ekranu poniżej.

http://imgur.com/NYLGRdY

Teraz mam to wywołanie AJAX, które dzieje się po kliknięciu elementu listy.

Oto kod:

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

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

I plik PHP pomocnika.

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

Mam teraz doświadczenie zawodowe i zapytałem mojego mentora, jak powinienem zmienić stan artykułu na śmieci. Dał mi kod wewnątrz funkcji i powiedział, że powinienem być w stanie go w jakiś sposób zmodyfikować, aby sterownik wykonał funkcję zapisywania w artykule.

Próbowałem i czytałem o tych rzeczach, ale nie wydaje się, żeby były one tak dobrze udokumentowane. Każda pomoc byłaby bardzo mile widziana, ponieważ nie jestem do końca pewien, jak powinienem postępować.

Dzięki.

Patric Gustafsson
źródło

Odpowiedzi:

9

Przede wszystkim musisz podać identyfikator artykułu wraz z prośbą. Następnie możesz użyć JTableklasy, aby zaktualizować stan:

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();
}
Dmitry Rekun
źródło