ユーザーが既にコメントしたノードにコメントするときに、コメント フォームの Fivestar 評価フィールド (「field_stars」と呼ばれる) を非表示にしたいと考えています。私のサイトにはCommentedというフラグがあり、誰かがコメントしたときにコメンテーターに代わってノードにフラグを立てるルールがあります (これは完全に機能します)。ここで見つけた情報に基づいて、問題を解決しようとしました:
function hiderating_form_alter(&$form, &$form_state, $form_id) {
global $user;
$flag = flag_get_flag('commented') or die('no "commented" flag defined');
if ($form_id == "comment_node_stuff_form") {
if ($flag->is_flagged($form['#node']->uid, $user->uid)) {
unset($form['field_stars']);
}
}
}
残念ながら、何も変わりません(エラーも発生しません)。私は何を間違えましたか?
@jerdiggity のコードでデバッグした後、次のようになります。
DEBUG: form id "comment_node_stuff_form" found. Debugging...
DEBUG: The code $flag->is_flagged($form["#node"]->uid, $user->uid) is returning FALSE.
(もちろん、私も取得しDEBUG: final form structure:
ますが、ここに貼り付けるには時間がかかります)。データベースに保存されているため、フラグが認識されない理由がわかりません...