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-ов, которые необходимо сгруппировать.
Комментарии
гениально просто! спасибо.
Немного не понял. Это я вставляю в template.php, и меня есть тип материала "картошка", хочу сделать так, как описали Вы в этом посте, что я должен поменять в вашем коде, чтобы у типа материала "картошка" были спрятаны настройки?
этот код нужно вставлять в файл своего модуля и рассчитан он на любой тип материала. если нужно только для картошки, то придётся изменить условие в первой функции на:
Огромное Вам спасибо - заработало, теперь понятно куда код вставлять.
И еще один вопрос. А как узнать имена fieldset-ов, которые необходимо сгруппировать?
поставьте devel и вызовите в
_mymodule_hide_fieldsets
:Добрый вечер.
Давно использую данный хук, и вот сегодня всплыл небольшой недостаток - вкладка "Настройки" не скрывается для гостей.
Все вложенные в нее вкладки скрываются как положено, а она просто висит пустой.
Как исправить данный недостаток?
Спасибо.
делайте проверку на
$GLOBALS['user']->uid
А для Drupal 7 такое решение прокатит?
Оставить комментарий