ノードの追加ページでページタイトルを変更


7

「ノードの追加」ページのタイトル(このタイトル)を変更するには、どのフック/フィルターを使用する必要がありますか?たとえば、「/ node / add /」を表示しているときに、タイトルを「Create」から「Add New」に変更したい

回答:


15

これを行うにはいくつかの方法がありますが、あなたが求めた方法はhook_form_alter()を利用することです:

<?php
function custom_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'mynodetype_node_form') {
    drupal_set_title('My new title');
  }
}
?>

これは、custom.moduleという名前のカスタムモジュール内にあります... drupal_set_title()は、ページロードの任意の場所で呼び出されると、タイトルを適切に設定します。基本的には、ノードフォームのレンダリングプロセスにフックし、その時点で「タイトルを希望どおりに設定する」と言います。

ユーザーが新しいノードを作成するか、既存のノードを編集するかによって、タイトルをさらに区別したい場合は、Develモジュールのdpm()関数を使用して$ form_state配列を出力し、あるかどうかを確認します。ノードIDが既にあるかどうか—ある場合は、ノードを編集しています。そうでない場合は、新しいノードを作成しています。タイトルを適切に設定します。

hook_form_alter()はおそらく最も堅牢なページです(誰かがnode / add / [type]以外の場所からノード追加フォームを表示していた場合)、また、hook_init()でパスを確認してそこにタイトルを設定することもできます。または他のさまざまな場所から(おそらくDrupal 7では、hook_page_alter())。


フォームが新しいか、編集中かを確認するにはどうすればよいですか?たとえば、新しいノードに「新しいノードを追加」と言ってもらい、ノードを編集している場合は、「このノードを編集」です。上記の回答に感謝しますが、非常に役立ちます。
Citricguy 2011

ノードの$ form配列にすでにnidがあるかどうかを確認してください。どの値にnidが含まれているのか忘れてしまいましたが、そこにあります。または、$ form_state ... nid ある場合、ユーザーがノードを編集しています。そこにいる場合ではない、ノードは、ノードの追加フォームです...
geerlingguy

4

同じ問題があり、そのためのモジュールを作成する必要がありました。

私の寄稿したモジュールを見つけることができます。ノード Drupal 7のタイトル追加します。

Node Add Titleを使用すると、ノード作成ページとノード編集ページのタイトルを変更できます。

お役に立てれば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.