function views_preprocess_node

Same name in other branches
  1. 9 core/modules/views/views.module \views_preprocess_node()
  2. 8.9.x core/modules/views/views.module \views_preprocess_node()
  3. 10 core/modules/views/views.module \views_preprocess_node()

Allows view-based node templates if called from a view.

The 'modules/node.views.inc' file is a better place for this, but we haven't got a chance to load that file before Drupal builds the node portion of the theme registry.

File

core/modules/views/views.module, line 20

Code

function views_preprocess_node(&$variables) {
    // The 'view' attribute of the node is added in
    // \Drupal\views\Plugin\views\row\EntityRow::preRender().
    if (!empty($variables['node']->view) && $variables['node']->view->storage
        ->id()) {
        $variables['view'] = $variables['node']->view;
        // The view variable is deprecated.
        $variables['deprecations']['view'] = "'view' is deprecated in drupal:11.1.0 and is removed in drupal:12.0.0. There is no replacement. See https://www.drupal.org/node/3459903";
        // If a node is being rendered in a view, and the view does not have a path,
        // prevent drupal from accidentally setting the $page variable:
        if (!empty($variables['view']->current_display) && $variables['page'] && $variables['view_mode'] == 'full' && !$variables['view']->display_handler
            ->hasPath()) {
            $variables['page'] = FALSE;
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.