Поля Drupal добавлены с помощью form_alter для отображения в предварительном просмотре узла

Я добавил поля формы к типу контента, используя функцию изменения формы в drupal. Есть ли способ увидеть эти поля в предварительном просмотре узла? Я могу видеть только поля, добавленные с помощью cck в предварительном просмотре узла.


person Ram    schedule 27.05.2011    source источник
comment
API значительно меняется между основными версиями. Какой вы используете?   -  person Oswald    schedule 27.05.2011


Ответы (2)



О хуках, вызываемых при просмотре узла, сообщает Освальд.

Единственная функция, которая знает, когда выполняется предварительный просмотр узла, - это node_preview () или theme_node_preview (), которая вызывается node_preview() с использованием следующего кода:

// Drupal 6.
if (!form_get_errors()) {
  $cloned_node = drupal_clone($node);
  $cloned_node->build_mode = NODE_BUILD_PREVIEW;
  $output = theme('node_preview', $cloned_node);
}

// Drupal 7.
if (!form_get_errors()) {
  $node->in_preview = TRUE;
  $output = theme('node_preview', array('node' => $node));
  unset($node->in_preview);
}

theme_node_preview () , затем вызывает node_view () используя следующий код:

// Drupal 6.
$output .= '<h3>' . t('Preview trimmed version') . '</h3>';
$output .= node_view(drupal_clone($node), 1, FALSE, 0);
$output .= '<h3>' . t('Preview full version') . '</h3>';
$output .= node_view($node, 0, FALSE, 0);

// Drupal 7.
$elements = node_view(clone $node, 'teaser');
$trimmed = drupal_render($elements);
$elements = node_view($node, 'full');
$full = drupal_render($elements);

Поскольку node_view() вызывает hook_nodeapi() (или hook_node_view()), эти реализации ловушки могут знать, просматривается ли узел, проверяя наличие $node->build_mode (или $node->in_preview). В Drupal 6 модуль должен проверять, что $node->build_mode равно NODE_BUILD_PREVIEW.

person apaderno    schedule 27.05.2011