it-swarm.dev

Mostra solo gli articoli dell'utente corrente nella vista categoria usando il plugin

Ciao, sto provando a scrivere un plug-in di contenuto che mostrerà solo gli articoli scritti dall'utente attualmente connesso nella vista categoria.

Usando i trigger onContentPrepare e onContentBeforeDisplay posso identificare l'utente attualmente connesso e se l'articolo appartiene a loro abbastanza semplicemente.

Il prossimo passo Non visualizzare l'articolo è molto più complicato e non sono stato in grado di capirlo.

Quindi, c'è un modo per NON mostrare facilmente un articolo usando questi trigger plugin?

Certo, ecco il codice:

function onContentBeforeDisplay($context, &$article, &$params, $limit=0)
     {

            $name = JFactory::getUser()->name;
            $author = $article->author;
            if ($author != $name) {
                /*  ?   */
            }

            // var_dump($article);
            // var_dump($params);
            // var_dump($context);
            return "";
    }
1
jalbasri

Non è necessario un plug-in per questo. Basta sovrascrivere una vista di categoria e inserire qui il tuo controllo.

Ad esempio per l'override della visualizzazione Blog blog.php e intorno alla riga 60 esegui il controllo:

if ($item->created_by == JFactory::getUser()->id) :
    echo $this->loadTemplate('item');
}
endif;

Questo è ovviamente solo un esempio, ma mostra il potere di scavalcare. Spero che questo possa aiutare.

4
Dmitry Rekun

Il plug-in da solo non può risolvere il problema, ma può essere utilizzato per aggiungere un campo con l'utente attualmente connesso ai parametri dell'articolo e nella vista in cui viene generato l'elenco delle categorie un semplice se è richiesta un'istruzione per impedire l'aggiunta di articoli da parte di altri utenti.

Il codice del plugin:

function onContentBeforeDisplay($context, &$article, &$params, $limit=0)
     {
            $name = JFactory::getUser()->name;
            $article->logged_in = $name;
            // var_dump($params);
            return "";
     }

Ho provato $ params-> set ('logg_in', $ name); ma non funzionerebbe nella vista, quindi ho dovuto aggiungerlo al parametro $ article.

La vista da modificare è joomla/components/com_content/views/category/tmpl/default_article.php

sotto questa linea:

<?php foreach ($this->items as $i => $article) : ?>

inserisci

<?php if ($this->items[$i]->author == $this->items[$i]->logged_in) : ?>

chiudi l'istruzione if in fondo e il gioco è fatto ora la tabella mostrerà solo gli articoli creati dall'utente corrente.

Modificare:

Grazie alla risposta di Dimitri ora vedo che dovresti essere in grado di accedere all'utente nei file di visualizzazione direttamente senza il plug-in e dovresti usare una sostituzione invece di modificare direttamente i file di visualizzazione.

1
jalbasri