2011-07-26 24 views
1

私はhook_node_presaveを使用して分類フィールドをグループのオーディエンス値にあらかじめ入力しています。 したがって、ノードのデータ入力フォームに分類フィールドを隠そうとしています。私はhook_form_alterを試しましたが、それは私のためには機能しませんでした。それを隠すことは可能ですか?drupalのノードデータ入力フォームのフィールドを非表示にするにはどうすればいいですか?

+0

あなたの 'hook_form_alter'コードを表示できますか? – nmc

答えて

5
<?php 

function mymodule_form_alter(&$form, &$form_state, $form_id) { 
    if ($form_id == 'contenttype_node_form') { 
    unset($form['somefield']); 
    } 
} 
?> 

これはうまく動作します。フォームIDと目的のフォームフィールドのキーを変更するだけで、フィールドは消えます。

入力がpresaveでオーバーライドされている場合は、CSSでそれを隠すオプションもあります。

+0

私はform_alterが私のために働かなかったので、私はCSSルートを行った。私は以下を試しました: 'function test_prepopulate_form_alter(&$ form、&$ form_state、$ form_id){ watchdog(" test_prepopulate "、" field_test%field_test "、array( '%field_test' => print_r($ form、true)) ); } 'ノードを追加/編集しましたが、ログにメッセージが表示されませんでした。私は何か間違っているのですか? –

+0

フォームIDをチェックしていないので、その関数はかなり間違っています...しかし、フォームがロードされていれば、dbに書き込むはずです。ヒットしないの? drupalキャッシュをフラッシュしてもう一度試してみてください。あなたのモジュールが実際には 'test_prepopulate'という名前である場合にのみ有効です。 – Coder1

+1

@Vlad Vinnikau:['hook_form_FORM_ID_alter'](http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_form_FORM_ID_alter/7)を使用しようとしている場合)命名規則では、それは 'yourmodulename_form_test_prepopulate_form_alter(...)'かそうでなければなりません。関数の名前が正しい形式であることを確認してください。 – nmc

関連する問題