Поля Drupal, добавленные с помощью form_alter, будут показаны в предварительном просмотре узла. - PullRequest
0 голосов
/ 27 мая 2011

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

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Вплоть до Drupal 6, реализовать hook_nodeapi , передав 'view' в качестве аргумента для $op.В Drupal 7 реализуйте hook_node_view .

0 голосов
/ 27 мая 2011

Хуки, вызываемые при просмотре узла, - это сообщения, сообщаемые Освальдом.

Единственная функция, которая знает, когда просматривается узел, это 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.

...