「あなたの投票は記録されました」というメッセージを削除する必要があります。ユーザーが投票に投票したとき。
Pollモジュールでdrupal_set_message(t('Your vote was recorded.'))
を含む行にコメントを付けようとしましたが、これを行うと、Poll Enhancementsモジュールがうまく機能しません。
特定のメッセージを削除するためのDrupal 7の他の方法は何ですか?
drupal_set_message() で設定されたメッセージは、文字列の配列として_$_SESSION['messages'][$type]
_に保存されます(_$type
_は_"status"
_、_"warning"
_、または_"error"
_)。表示されるメッセージは、投票の処理に使用されるフォーム送信ハンドラである poll_vote() に設定され、投票用のフォームビルダー poll_view_voting() から使用されます。形。
Show文字列を削除するには、次のことを行う必要があります。
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;
}
}
_
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');
}
}
}
}
質問が4か月前に投稿され、元の投稿者が方法を見つけたはずですが、これに遭遇する可能性のある将来のユーザーにとって、適切で適切な解決策は メッセージモジュールを無効にする です。そうすれば、コアをハックしたり(いやいや!)、新しいモジュールを作成したり、テーマを変更したりする必要はありません。