it-swarm-tr.com

Eklentiyi kullanarak kategori görünümünde yalnızca geçerli kullanıcının makalelerini göster

Merhaba ben sadece şu anda giriş yapmış kullanıcı tarafından kategori görünümünde yazılmış makaleleri gösterecek bir içerik eklentisi yazmaya çalışıyorum.

OnContentPrepare ve onContentBeforeDisplay tetikleyicilerini kullanarak, şu anda oturum açmış olan kullanıcıyı ve makalenin kendilerine ait olup olmadığını tanımlayabilirim.

Bir sonraki adım Makaleyi göstermemek çok daha zordur ve anlayamadım.

Peki, bu eklenti tetikleyicilerini kullanarak bir makaleyi kolayca göstermemenin bir yolu var mı?

Tabii, işte kod:

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

Bunun için bir eklentiye ihtiyacınız yok. Sadece geçersiz kıl kategori görünümü ve çekinizi oraya koyun.

Örneğin, Blog görünümünü geçersiz kılma blog.php ve 60. satır civarında çekinizi yapın:

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

Bu elbette sadece bir örnek, ama geçersiz kılma gücünü gösteriyor. Umarım bu yardımcı olur.

4
Dmitry Rekun

Eklenti tek başına sorunu çözemez, ancak şu anda oturum açmış olan kullanıcı ile makale parametrelerine ve kategori listesinin oluşturulduğu görünümde başka kullanıcıların makale eklemesini önlemek için bir ifade gerekiyorsa basit bir alan eklemek için kullanılabilir.

Eklenti kodu:

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

$ Params-> set ('log_in', $ name); ancak $ makale parametresine eklemek zorunda kaldı, bu yüzden görünümde işe yaramaz.

Düzenlenecek görünüm joomla/components/com_content/views/category/tmpl/default_article.php

bu çizginin altında:

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

ekle

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

alttaki if ifadesini kapatın ve şimdi tablo yalnızca geçerli kullanıcı tarafından yazılan makaleleri gösterecektir.

Düzenle:

Dimitri'nin cevabı sayesinde, artık eklenti olmadan doğrudan görünüm dosyalarında kullanıcıya erişebilmeniz ve görünüm dosyalarını doğrudan değiştirmek yerine bir geçersiz kılma kullanmanız gerektiğini görüyorum.

1
jalbasri