こんにちは私は現在ログインしているユーザーによって書かれた記事のみをカテゴリビューに表示するコンテンツプラグインを作成しようとしています。
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 "";
}
プラグインだけでは問題を解決できませんが、現在ログインしているユーザーのフィールドを記事パラメーターに追加したり、他のユーザーによる記事の追加を防ぐためにカテゴリリストが生成されるビューで単純な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の回答のおかげで、プラグインなしでビューファイル内のユーザーに直接アクセスできるはずです。ビューファイルを直接変更するのではなく、オーバーライドを使用する必要があります。