コメントモジュールの制御
こんにちは。
コメントモジュールの使い方について助言いただきたく。
コメントモジュールのアクセス制御は、
「anonymous」「authenticated」と、ユーザグループ単位で制御しますよね。
anonymousはコメント禁止にしているのですが、
authenticatedなユーザでも、
「ブログやブック」へのコメント:admin承認が必要
「フォーラム」へのコメント:admin承認なしで投稿可能
ってのをやりたいのですがいい方法ありませんか?
Drupal 4.7.3 (クリーンURL 有効)
MySQL 4.0.22 / PHP 4.4.2 (セーフモード有効)
無料レンタルサーバ (XREA)
.htaccess 使用
こんばんは。
なるほど、そういった需要もありますね。
ということで、承認不要のコメント投稿の権限を、コンテンツタイプごとに細分化するよう hack してみました。
対象は modules/comment.module です。
// $Id: comment.module,v 1.455.2.7 2006/07/18 10:46:24 unconed Exp $
152 行目
function comment_perm() {
// return array('access comments', 'post comments', 'administer comments', 'post comments without approval');
// ここから
$arr = array('access comments', 'post comments', 'administer comments');
$ntype = node_get_types();
foreach ($ntype as $type => $val) {
$arr[] = 'post comments without approval ' . "($type)";
}
return $arr;
// ここまでを追加
}
569 行目
// Add the comment to database.
// $status = user_access('post comments without approval') ? COMMENT_PUBLISHED : COMMENT_NOT_PUBLISHED;
// ここから
$t_node = node_load($edit['nid']);
$status = user_access('post comments without approval (' . $t_node->type . ')') ? COMMENT_PUBLISHED : COMMENT_NOT_PUBLISHED;
// ここまでを追加
$roles = variable_get('comment_roles', array());
上記のように変更すると、アクセスコントロールのページに
post comments without approval (blog)
post comments without approval (forum)
などのように、利用できるコンテンツタイプの数だけ権限が増えますので、任意で設定してください。
なお、仕様上、英語になってしまいますが、すべて「承認不要のコメント投稿 (xxxx)」という意味です。
必要であれば admin/locale/string/search で post comments without approval を検索し、それぞれを編集すれば日本語表示にもなります。
この件、ブックに入れようと思いますので、動作確認の上、ご報告お願いいたします。
それから、当サイトでは role = ユーザグループ としていますので、勝手ながら当該箇所を修正させていただきました。 悪しからずご了承下さい。