1

これは奇妙なものであり、理想的ではありませんが、基本的に、認証されたユーザーがノードのコメントを投稿および表示できるようにするためにコアコメントモジュールを使用しているDrupalサイトがあります。認証されていないユーザーもコメントを投稿できるが、コメントは表示できないように、これを拡張する必要があります。認証されたユーザーは、他の認証されたユーザーによるコメントを表示するためのアクセス権しかありません。管理者ユーザーのみがすべてのコメントを表示するためのアクセス権を持ちます。

これを行う方法はありますか?権限はこの柔軟性を許可していないようです(ユーザーにフォームを提供するにはアクセスコメントが必要ですが、承認されたすべてのコメントが表示されます)。

Drupalフックの使用を検討しましたが、私が見る限り、コメントが取得された後に発生するhook_comment関数のみがあります(おそらくこれを利用する良い方法がありますが、私の心は空白になっています)。

助言がありますか?特定のユーザーからのコメントを非表示にすることはありがたいですが、コメントを投稿できるようにすることはおそらくベストプラクティスではありません。しかし、私はすでに持っているもので作業する必要があります。

4

2 に答える 2

1

この問題を解決する方法を思いつくことができますが、それは最善の解決策ではありません。

  1. 独自の権限を持つカスタム モジュールを作成します。
  2. コメントのレンダリングに使用される標準のテーマ関数を上書きします。コメント オブジェクトを使用できるようにする必要があります。これにより、コメントが匿名ユーザーからのものか、登録済みユーザーからのものかを簡単に確認でき、ユーザーがどのコメントを表示できるかを確認できます。

コメントはスレッド化できるため、これにはいくつかの問題があります。理論的には、スレッド内のコメントが欠落し、混乱やその他のバグが発生する可能性があります。

しかし、私が言ったように、これはあなたが得たもので、迅速かつ汚い修正です.

于 2010-07-02T11:06:52.723 に答える
0

コメント管理キューを使用して、まさにこれを達成することはできませんか? コメント モジュールの設定を確認してください (admin/content/comment)。

ユーザーがログインしているかどうかを確認し、ログインしていない場合はコメントを表示しないようにするだけで、匿名ユーザーにコメントを表示するかどうかをテーマの template.php で設定できます。

例えば:

function mytheme_preprocess_comment(&$vars, $hook) {
  global $user;
  if (!$user->uid) {
    unset($vars);
  }
}

次に、comment.tpl.php の上部に:

if ( isset($content) ) :

コメントが設定されていないかどうかを確認して、空の div を大量にレンダリングしないようにします。

これを行うには、フックを使用して anon ユーザーのコメントをまったく読み込まないようにするより良い方法があることは間違いありませんが、このコードはそれほど手間をかけずに仕事をします。

于 2010-07-02T11:06:06.723 に答える