it-swarm-es.tech

Mostrar solo artículos por usuario actual en la vista de categoría usando el complemento

Hola, estoy tratando de escribir un complemento de contenido que solo muestre artículos escritos por el usuario actualmente conectado en la vista de categoría.

Utilizando los activadores onContentPrepare y onContentBeforeDisplay puedo identificar al usuario que ha iniciado sesión actualmente y si el artículo les pertenece simplemente.

El siguiente paso No mostrar el artículo es mucho más complicado y no he podido resolverlo.

Entonces, ¿hay alguna manera de NO mostrar fácilmente un artículo usando estos disparadores de complementos?

Claro, aquí está el 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

No necesita un complemento para eso. Simplemente anular una vista de categoría y ponga su cheque allí.

Por ejemplo, para la anulación de la vista del blog blog.php y alrededor de la línea 60 haga su cheque:

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

Eso es, por supuesto, solo un ejemplo, pero muestra el poder de anular. Espero que esto ayude.

4
Dmitry Rekun

El complemento por sí solo no puede resolver el problema, pero se puede usar para agregar un campo con el usuario actualmente conectado a los parámetros del artículo y, en la vista donde se genera la lista de categorías, se requiere una declaración simple si se requiere que otros usuarios no agreguen artículos.

El código del complemento:

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

Intenté $ params-> set ('login_in', $ name); pero no funcionaría en la vista, así que tuve que agregarlo al parámetro $ article.

La vista para editar es joomla/components/com_content/views/category/tmpl/default_article.php

debajo de esta línea:

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

añadir

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

cierre la declaración if en la parte inferior y ya está, la tabla solo mostrará los artículos creados por el usuario actual.

Editar:

Gracias a la respuesta de Dimitri, ahora veo que debería poder acceder al usuario en los archivos de vista directamente sin el complemento y debe usar una anulación en lugar de modificar directamente los archivos de vista.

1
jalbasri