web-dev-qa-db-ja.com

「あなたの投票は記録されました」を削除するにはどうすればよいですか。世論調査でのメッセージ?

「あなたの投票は記録されました」というメッセージを削除する必要があります。ユーザーが投票に投票したとき。

Pollモジュールでdrupal_set_message(t('Your vote was recorded.'))を含む行にコメントを付けようとしましたが、これを行うと、Poll Enhancementsモジュールがうまく機能しません。

特定のメッセージを削除するためのDrupal 7の他の方法は何ですか?

2
cabita

drupal_set_message() で設定されたメッセージは、文字列の配列として_$_SESSION['messages'][$type]_に保存されます(_$type_は_"status"_、_"warning"_、または_"error"_)。表示されるメッセージは、投票の処理に使用されるフォーム送信ハンドラである poll_vote() に設定され、投票用のフォームビルダー poll_view_voting() から使用されます。形。

Show文字列を削除するには、次のことを行う必要があります。

  • hook_form_FORM_ID_alter() を実装して、poll_vote()の後に実行されるフォーム送信ハンドラを追加します。
  • フォーム送信ハンドラを実装して、poll_vote()から追加された文字列を削除します。

次のようなコードが機能するはずです。

_function mymodule_form_poll_view_voting_alter(&$form, &$form_state) {
  $form['vote']['#submit'][] = 'mymodule_poll_view_submit';
}

function mymodule_poll_view_submit($form, &$form_state) {
  if (isset($_SESSION['messages']['status']) && is_array($_SESSION['messages']['status'])) {
    $messages = array_flip($_SESSION['messages']['status']);
    unset($messages[t('Your vote was recorded.')]);
    $_SESSION['messages']['status'] = $messages;
  }
}
_
5
kiamlaluno

drupal api、 drupal_get_messages() をデフォルトで使用すると、選択したタイプのメッセージが消去されます。

次に、プロセスはメッセージdrupal_get_messages( 'error'、TRUE)drupal_set_message()を読み取って、フィルタリングしたくないすべてのメッセージを戻します。このコードは、より柔軟な「メッセージの無効化モジュール」にあります。

2つの実装ステップは、i)メッセージを管理するための関数を追加し、ii)フィルタリングを実行します。

function osdash_theme_registry_alter(&$theme_registry) {
  $theme_registry['status_messages']['function'] = '_osdash_disable_status_messages';
}

function _osdash_disable_status_messages($display = NULL) {
  // Retrieve messages
  $messages = drupal_get_messages($display);
  if (!empty($messages['status'])) {
    foreach ($messages['status'] as $message_index => $message) {
      if ($message != 'Failed to find the list of invitees from the group.') {
        drupal_set_message($message, 'warning');
      }
    }
  }
}
2
Interlated

質問が4か月前に投稿され、元の投稿者が方法を見つけたはずですが、これに遭遇する可能性のある将来のユーザーにとって、適切で適切な解決策は メッセージモジュールを無効にする です。そうすれば、コアをハックしたり(いやいや!)、新しいモジュールを作成したり、テーマを変更したりする必要はありません。

1
Tunox