Для Друпал есть прекрасный модуль Field Group, который позволяет группировать поля не только при выводе сущностей, но и на форме редактирования. По умолчанию на форме редактирования есть стандартный набор вертикальных вкладок, типа "Настройки публикации" или "Настройки комментариев".
Покажу пример, как можно эти вкладки переместить из стандартных вертикальных в любую группу, созданную через Field Group.
Например, есть тип материала "contract". В нем свойство "promote" мы используем, что бы отмечать разовые договора. Чекбокс"promote" расположен на вкладке "Настройки публикации", и для удобства редактирования, нужно эту вкладку переместить в другое место на форме.
/**
* Implements hook_form_FORM_ID_alter.
*/
function MYMODULE_form_contract_node_form_alter(&$form, &$form_state, $form_id) {
$form['#attached']['css'][] = drupal_get_path('module', 'frz_address') . '/css/contract-form.css';
unset($form['options']['#group']); //Удаляем старую группу
$form['options']['#type'] = 'container'; //Отключаем fieldset, будет просто div
$form['#group_children']['options'] = 'group_left'; //Имя нашей группы (Field Group)
//Меняем заголовок чекбокса (например, мы его используем не по назначению)
$form['options']['promote']['#title'] = 'Разовый';
Или вот еще пример. Модуль Ubercart добавляет вкладку "Информация о товаре". Хотим ее переместить в другую группу, а также вкладку от модуля Flag
/**
* Implements hook_form_alter().
*
*/
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
if (uc_product_is_product_form($form)) {
if (isset($form['base'])) {
unset($form['base']['#group']);
unset($form['base']['#attached']);
$form['base']['#type'] = 'fieldset';
$form['#group_children']['base'] = 'group_product_lines';
$form['base']['#collapsible'] = FALSE;
$form['base']['#collapsed'] = FALSE;
}
if(isset($form['flag'])){
unset($form['flag']['#group']);
unset($form['flag']['#attached']);
$form['flag']['#type'] = 'container';
$form['flag']['#title'] = '';
$form['#group_children']['flag'] = 'group_sklad';
}
}
}
- 24.06.2021
- 44 просмотра