Как добавить псевдо поле в форму редактирования ноды
Недавно мне было необходимо реализовать весьма нетипичный проект, где на странице редактирования нужно было отобразить некий контент взаимодействующий только с содержимым админской части, но при этом не сохраняющийся ни в БД ни отображающийся на странице материала. Честно говоря у меня ушло слишком много времени, что бы реализовать даную задачу, по этому на будущее делюсь полученным опытом, создания псевдо полей, возможно это сэкономит кому то время. Выполнять данный код будем в кастомном модуле. Вот таким образом мы можем вывести поле в админской части:function MYMODULE_form_node_form_alter(&$form, $form_state) { print $form->nodeform[1]; $form['my_custom'] = array( '#type' => 'container', '#access' => TRUE, '#title' => 'Title', '#weight' => 5, 'barclays_epdq_active' => array( '#markup' => '
ВАША РАЗМЕТКА
',
),
);
}
И наоборот, вариант отображения поля только в самой ноде:
function MYMODULE_field_extra_fields() { $extra['node']['NODE_TYPE'] = array( // Сюда подставляем машинное имя ноды 'display' => array( 'mysuper_form' => array( 'label' => t('My field'), 'weight' => -5, ), ), ); return $extra; } function MYMODULE_node_view($node, $view_mode, $langcode,$form, &$form_state) { if ($view_mode == 'full' && $node->type == 'NODE_TYPE') { // Здесь так же можно сделать ограничение на тип ноды по желанию $node->content['mysuper_form'] = array( '#markup' => '
ВАША РАЗМЕТКА
',
);
}
}
Вот и всё волшебство! Если у вас есть идеи как улучшить или оптимизировать данный подход, присылайте ваши варианты.