web-dev-qa-db-ja.com

プラグインを使用してカテゴリビューに現在のユーザーの記事のみを表示する

こんにちは私は現在ログインしているユーザーによって書かれた記事のみをカテゴリビューに表示するコンテンツプラグインを作成しようとしています。

OnContentPrepareおよびonContentBeforeDisplayトリガーを使用すると、現在ログインしているユーザーと、記事が非常に単純にそれらに属しているかどうかを識別できます。

次のステップ記事を表示しないはかなりトリッキーであり、理解することができませんでした。

では、これらのプラグイントリガーを使用して記事を簡単に表示しない方法はありますか?

確かに、ここにコードがあります:

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

そのためのプラグインは必要ありません。ただ override カテゴリビューで、そこにチェックを入れます。

たとえば、ブログビューのオーバーライド blog.php の場合、60行目付近で確認します。

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

これはもちろん単なる例ですが、オーバーライドの威力を示しています。これがお役に立てば幸いです。

4
Dmitry Rekun

プラグインだけでは問題を解決できませんが、現在ログインしているユーザーのフィールドを記事パラメーターに追加したり、他のユーザーによる記事の追加を防ぐためにカテゴリリストが生成されるビューで単純なifステートメントが必要な場合に使用できます。

プラグインコード:

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

$ params-> set( 'logged_in'、$ name);を試しましたただし、ビューでは機能しないため、$ articleパラメーターに追加する必要がありました。

編集するビューはjoomla/components/com_content/views/category/tmpl/default_article.phpです。

この行の下:

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

追加

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

下部のifステートメントを閉じると、現在のユーザーが作成した記事のみがテーブルに表示されます。

編集:

Dimitriの回答のおかげで、プラグインなしでビューファイル内のユーザーに直接アクセスできるはずです。ビューファイルを直接変更するのではなく、オーバーライドを使用する必要があります。

1
jalbasri