Drupal → Прячем настройки ноды в раскрывающийся fieldset

24.12.2010

Ещё один вариант облегчить форму создания/редактирования ноды — поместить все второстепенные настройки в раскрывающийся fieldset:

Облегчённая форма создания материала

Облегчённая форма создания материала

/**
 * Implements hook_form_alter()
 */
function mymodule_form_alter(&$form, &$form_state, $form_id) {
  if (isset($form['type']) && isset($form['#node']) && $form_id == $form['type']['#value'] .'_node_form') {
    $form['#after_build'][] = '_mymodule_hide_fieldsets';
  }
}

/**
 * After build callback
 */
function _mymodule_hide_fieldsets($form, &$form_state) {
  $fieldsets = array('menu', 'revision_information', 'comment_settings', 'path', 'options', 'author');
        
  $form['node_settings'] = array(
    '#type' => 'fieldset',
    '#title' => t('Settings'),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
    '#weight' => 10,
  );
    
  foreach ($fieldsets as $name) {
    $form['node_settings'][$name] = $form[$name];
    unset($form[$name]);
  }
    
  return $form;
}

В переменной $fieldsets нужно перечислить имена fieldset-ов, которые необходимо сгруппировать.

Написанное актуально для
Drupal 6.x
Похожие записи

Комментарии

Николай
17.01.2011, 02:43

Немного не понял. Это я вставляю в template.php, и меня есть тип материала "картошка", хочу сделать так, как описали Вы в этом посте, что я должен поменять в вашем коде, чтобы у типа материала "картошка" были спрятаны настройки?

этот код нужно вставлять в файл своего модуля и рассчитан он на любой тип материала. если нужно только для картошки, то придётся изменить условие в первой функции на:

if ($form_id == 'potato_node_form')
Николай
17.01.2011, 14:53

Огромное Вам спасибо - заработало, теперь понятно куда код вставлять.

Николай
17.01.2011, 14:58

И еще один вопрос. А как узнать имена fieldset-ов, которые необходимо сгруппировать?

поставьте devel и вызовите в _mymodule_hide_fieldsets:

dsm($form);
Андрей
07.08.2011, 03:05

Добрый вечер.
Давно использую данный хук, и вот сегодня всплыл небольшой недостаток - вкладка "Настройки" не скрывается для гостей.
Все вложенные в нее вкладки скрываются как положено, а она просто висит пустой.

Как исправить данный недостаток?

Спасибо.

делайте проверку на $GLOBALS['user']->uid

А для Drupal 7 такое решение прокатит?

Добавить комментарий