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