デフォルトのエラーメッセージをDrupalコアから変更します。
エラーメッセージは「有効なファイル形式を選択してください」です。
私の問題は以下に簡単です。
どうすればこれを達成できますか?
(文字列オーバーライドモジュールを使用しないでください)
前もって感謝します..
その文字列が t() 関数(おそらくそうである)を介して実行され、 String Overrides を使用したくない場合は、設定ファイルを更新できます。
Drupal 6の場合、これを "settings.php"ファイルに入れれば機能します。
$conf["locale_custom_strings_en"] = array(
"Please Select the Valid File Format" => "The file upload field cannot upload the speicified filed",
);
Drupal 7では、次のように変更します
$conf["locale_custom_strings_en"][""] = array(
"Please Select the Valid File Format" => "The file upload field cannot upload the speicified filed",
);
ただし、D6インストールのいずれにも「有効なファイル形式を選択してください」という文字列が表示されません。これは、間違ったファイルタイプまたはMIMEタイプでCCKファイルフィールドにアップロードしようとしたときに表示されるメッセージではありません。 tファイル拡張子と一致します。
$clear_queue
パラメータはデフォルトでtrue
です。Drupalは関数 theme_status_messages() から呼び出されたメッセージキューを取得します template_preprocess_page() から呼び出されるため、これを実現する1つの場所がそのテーマ関数のオーバーライドになります。メッセージの正確な状況によっては、メッセージが生成された時点に近いフックが見つかる場合があります。
メッセージはtemplate_preprocess_page()でレンダリングされるため、ページが既にレンダリングされているときにこのフックが呼び出されるため、 hook_exit() の実装はオプションではありません。
ところで、私はしばしば hook_message_alter() を望みました。
Template_preprocess_page()に次のコードを配置し、完全に機能しました。これが最善の方法であると私は完全には確信していませんが、カスタムエラーを生成するモジュールを構築するよりも高速でした。
これを行うために、drupal_get_messages()によって生成されたエラーメッセージをすべて調べ、それらを循環させました。彼らが探していた文字列と一致した場合、drupal_set_message()を使用して新しいテキストでエラーを生成します。最後のステップは、drupal_set_message()を介して残りのエラーを渡すことでした。そうしないと、それらは呼び出されません。
繰り返しますが、これがそれを実現する最良の方法であるとは確信していません。テーマレイヤーでこれを行う方法について何か提案があれば、ぜひ聞いてみたいと思います。
$getmsg = drupal_get_messages('error');
if ($getmsg){
foreach($getmsg['error'] as $err) {
switch($err) {
case 'SUBSCRIBE TO THE NEWSLETTER field is required.':
drupal_set_message('Sorry, you must sign up to the newsletter to enter', 'error');
break;
case 'I AGREE WITH THE CONTEST RULES & REGULATIONS</a> field is required.':
drupal_set_message('Sorry, you must agree to the rules and regulations', 'error');
break;
default:
drupal_set_message(t($err), 'error', FALSE);
break;
}
}
}
エンティティフィールドごとに Field validation を使用して、エラーメッセージをカスタマイズできます。
これを行うには、フィールド設定を編集し、検証に移動して、新しい検証ルールを追加します(必須フィールドルール)。そこでは、テキストフィールドを設定してそのフィールドのカスタムエラーメッセージにする必要があります。
最も簡単な方法は String Overrides module を使用することです。
モジュールをインストールすると、文字列を独自の文字列に置き換えることができます。文字列オーバーライドモジュールでは、t()
関数にラップされた文字列を置き換えることもできます。