いくつかのフィールドを無効にして、hook_page_alter() で読み取り専用にしようとしています。ユーザーがページ編集セクション(フォーム編集)を表示しているかどうかを確認できました
$page['content']['system_main']['#node_edit_form'] == TRUE)
次に、いくつかのフィールドを無効にしようとしたときに、次のコードで選択リストを無効にできることがわかりました。
$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#attributes']['disabled'] = TRUE;
しかし、次のコードを使用すると機能しません。
$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#disabled'] = TRUE;
また、同じコードを使用してテキスト領域フィールドを無効にできないこともわかりました。
$page['content']['system_main']['field_my_text_area']['und']['#attributes']['disabled'] = TRUE;
上記のコードはテキスト領域を無効にしませんが、同じコードで選択リストを無効にすることができます!
次に、同じことを行うために hook_form_alter() を試してみたところ、フィールドを無効にすることができ、$page 配列からレンダリングされた配列を確認したところ、次のように表示されました。
$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#disabled'] = TRUE;
しかし、hook_page_alter() で同じコードを設定すると、機能しませんでした。hook_page_alter() がマークアップを変更する最後の場所だと思いました。
drupal 7 の hook_page_alter() 内で、あらゆる種類のフィールドを無効/読み取り専用にする最良の方法は何ですか?
ありがとうございました