Lab / Drupal

Как добавить псевдо поле в форму редактирования ноды

Недавно мне было необходимо реализовать весьма нетипичный проект, где на странице редактирования нужно было отобразить некий контент взаимодействующий только с содержимым админской части, но при этом не сохраняющийся ни в БД ни отображающийся на странице материала. Честно говоря у меня ушло слишком много времени, что бы реализовать даную задачу, по этому на будущее делюсь полученным опытом, создания псевдо полей, возможно это сэкономит кому то время. Выполнять данный код будем в кастомном модуле. Вот таким образом мы можем вывести поле в админской части:
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' => '
ВАША РАЗМЕТКА
', ); } } Вот и всё волшебство! Если у вас есть идеи как улучшить или оптимизировать данный подход, присылайте ваши варианты.