Skip to main content

ノードのフォームでボタンを無効または非表示にする方法

Posted in

Drupal のノードの新規作成や編集のフォームで、「プレビュー」や「削除」のボタン表示を制御する方法について。

方法1
当該要素を CSS で display:none; 指定する。

方法2
hook_form_alter() フックをオーバーライドする。

たとえば、hoge モジュールを使用して、コンテンツタイプが hogege であるノードのフォームで「プレビュー」ボタンが表示されないようにするなら、

function hoge_form_alter($form_id, &$form) {
  switch ($form_id) {
    case 'hogege_node_form':
      unset($form['preview']);
      break;
  }
}

とする。「削除」ボタンの場合は 'preview' の代わりに 'delete' とする。

同じく、「プレビュー」ボタンを無効(淡色表示)にするなら、

function hoge_form_alter($form_id, &$form) {
  switch ($form_id) {
    case 'hogege_node_form':
      $form['preview']['#disabled'] = true;
      break;
  }
}

とする。

適用したいコンテンツタイプが複数ある場合は、(break は入れずに)対応する case 文を追加:

function hoge_form_alter($form_id, &$form) {
  switch ($form_id) {
    case 'hogege_node_form':
    case 'hohoho_node_form':
    case 'hehehe_node_form':
      $form['preview']['#disabled'] = true;
      break;
  }
}

注)フォームID($form_id)は、「コンテンツタイプ名_node_form」の形式をとる。

参考資料
http://drupal.org/node/138528