xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

Ещё один вариант облегчить форму создания/редактирования ноды — поместить все второстепенные настройки в раскрывающийся 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
Похожие записи

Комментарии RSS

гениально просто! спасибо.

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

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

if ($form_id == 'potato_node_form')

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

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

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

dsm($form);

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

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

Спасибо.

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

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

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании