Главная Новости

Drupal: помещаем поле в таб формы редактирования ноды


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

Это логическое продолжение предыдущей статьи о добавлении флажка (произвольного поля логического типа) к материалу произвольного типа, - искренне извиняюсь за данную тавтологию, но здесь без неё никак. Итак, по материалам прошлой заметки мы создали "чекбокс" с машинным именем field_example_checkbox. Оно работает, значения сохраняются в базу данных и при этом мы не писали ни единой строчки программного кода. К большому сожалению, чтобы грамотно переместить упомянутый field_example_checkbox в одну из стандартных системных вертикальных вкладок понадобиться немного попрограммировать, переопределяя стандартный вывод.

Итак, для решения задачи воспользуйтесь следующим кодом (вставлять в собственный модуль):

<?php /** * Регистрируем крючок hook_form_FORM_ID_alter(). */ function ModuleName_form_node_form_alter ( & $form , & $form_state , $form_id ) { if ( isset ( $form [ '#node_edit_form' ] ) && $form [ '#node_edit_form' ] === true ) : $form [ 'options' ] [ 'field_checkbox_example' ] = $form [ 'field_checkbox_example' ] ; // - помещаем поле в вертикальную вкладку. hide ( $form [ 'field_checkbox_example' ] ) ; // - избавляемся от дубля, скрывая его. endif ; } ?>

Вышеприведенный сниппет вставить имеющийся флажок на вкладку настроек публикации. Обратите внимание на то, что для предотвращения отображения дублированного значения я использую "апишную" функцию hide(), а не unset().

Дополнительные пояснения:

Наверное мне не следует пояснять читателям, что ModuleName - это имя вашего модуля. Из более важных примечаний отмечу следующее: перемещать поля без дополнительных модулей можно на все системные табы, ниже приведены их идентификаторы актуальные для Drupal 7:

$form['menu'] - настройки меню; $form['comment_settings'] - настройки комментариев; $form['revision_information'] - информация о редакции; $form['author'] - информация об авторе; $form['options'] - настройки публикации. $form['path'] - настройки адресов.
rss