ti-enxame.com

Mostrar apenas artigos do usuário atual na exibição de categoria usando o plug-in

Olá, estou tentando escrever um plug-in de conteúdo que mostrará apenas artigos escritos pelo usuário conectado no momento na exibição de categoria.

Usando os gatilhos onContentPrepare e onContentBeforeDisplay, posso identificar o usuário conectado no momento e se o artigo pertence a eles de maneira simples.

O próximo passo Não está exibindo o artigo é muito mais complicado e não consegui descobrir isso.

Portanto, existe uma maneira de NÃO mostrar facilmente um artigo usando esses gatilhos de plug-in?

Claro, aqui está o código:

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

Você não precisa de um plugin para isso. Apenas substitua uma visualização de categoria e faça seu cheque lá.

Por exemplo, para a substituição da exibição do blog blog.php e na linha 60 faça sua verificação:

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

É claro que isso é apenas um exemplo, mas mostra o poder de substituir. Espero que isso ajude.

4
Dmitry Rekun

O plug-in sozinho não pode resolver o problema, mas pode ser usado para adicionar um campo com o usuário atualmente conectado aos parâmetros do artigo e, na exibição em que a lista de categorias é gerada, é necessária uma instrução if simples para impedir a adição de artigos por outros usuários.

O código do plugin:

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

Eu tentei $ params-> set ('log_in', $ name); mas não funcionaria na visualização, então tive que adicioná-lo ao parâmetro $ article.

A visão para editar é joomla/components/com_content/views/category/tmpl/default_article.php

embaixo desta linha:

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

adicionar

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

feche a instrução if na parte inferior e agora a tabela mostrará apenas os artigos criados pelo usuário atual.

Editar:

Graças à resposta de Dimitri, agora vejo que você deve acessar o usuário nos arquivos de exibição diretamente sem o plug-in e deve usar uma substituição em vez de modificar diretamente os arquivos de exibição.

1
jalbasri