it-swarm-id.com

Hanya tampilkan artikel oleh pengguna saat ini dalam tampilan kategori menggunakan plugin

Hai, saya mencoba menulis plugin konten yang hanya akan menampilkan artikel yang ditulis oleh pengguna yang saat ini masuk dalam tampilan kategori.

Menggunakan pemicu onContentPrepare dan onContentBeforeDisplay saya dapat mengidentifikasi pengguna yang saat ini masuk dan apakah artikel itu milik mereka secara sederhana.

Langkah selanjutnya Tidak menampilkan artikel jauh lebih rumit dan saya belum bisa mengetahuinya.

Jadi, adakah cara untuk TIDAK menunjukkan artikel dengan mudah menggunakan pemicu plugin ini?

Tentu, ini kodenya:

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

Anda tidak perlu plugin untuk itu. Cukup ganti tampilan kategori dan beri tanda centang di sana.

Misalnya untuk override tampilan Blog blog.php dan sekitar baris 60 lakukan pemeriksaan Anda:

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

Itu tentu saja hanya sebuah contoh, tetapi itu menunjukkan kekuatan mengesampingkan. Semoga ini bisa membantu.

4
Dmitry Rekun

Plugin itu sendiri tidak dapat menyelesaikan masalah tetapi dapat digunakan untuk menambahkan bidang dengan pengguna yang saat ini masuk ke parameter artikel dan dalam tampilan di mana daftar kategori dihasilkan sederhana jika pernyataan diperlukan untuk mencegah penambahan artikel oleh pengguna lain.

Kode plugin:

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

Saya mencoba $ params-> set ('log_in', $ name); tapi itu tidak akan berfungsi dalam tampilan jadi saya harus menambahkannya ke parameter $ article.

Tampilan untuk diedit adalah joomla/components/com_content/views/category/tmpl/default_article.php

di bawah baris ini:

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

menambahkan

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

tutup pernyataan if di bagian bawah dan itu saja sekarang tabel hanya akan menampilkan artikel yang ditulis oleh pengguna saat ini.

Edit:

Berkat jawaban Dimitri sekarang saya melihat Anda harus dapat mengakses pengguna di file tampilan langsung tanpa plugin sama sekali dan Anda harus menggunakan penggantian alih-alih langsung memodifikasi file tampilan.

1
jalbasri