You are here

function panelizer_render_node in Panelizer 7

Same name and namespace in other branches
  1. 6 includes/node.inc \panelizer_render_node()

Render the panels display for a given panelizer node.

Parameters

stdClass $node: A fully-loaded node object controlled by panelizer.

array $args: Optional array of arguments to pass to the panels display.

Return value

array If the node isn't panelized, this returns NULL. Otherwise, it returns an associative array with the following keys:

  • 'content': String containing the rendered panels display output.
  • 'no_blocks': Boolean defining if the panels display wants to hide core blocks or not when being rendered.
2 calls to panelizer_render_node()
panelizer_panelizer_task_render in plugins/task_handlers/panelizer_node.inc
Render a node that has been panelized.
panelizer_plugin_row_panelizer_node_view::render in plugins/views/panelizer_plugin_row_panelizer_node_view.inc
Render a row object. This usually passes through to a theme template of some form, but not always.

File

includes/node.inc, line 138
Contains routines specific to handling nodes that are panelized.

Code

function panelizer_render_node($node, $args = array()) {
  ctools_include('node', 'panelizer');
  $panelizer = panelizer_load_node_panelizer($node);
  if (empty($panelizer)) {
    return;
  }

  // Load the display
  $display = panelizer_load_display($panelizer);
  if (empty($display)) {
    return;
  }
  $display->context = panelizer_get_contexts($panelizer, $node);
  $display->args = $args;
  $display->css_id = $panelizer->css_id;

  // This means the IPE will use our cache which means it will get appropriate
  // allowed content should it be selected.
  $display->cache_key = 'panelizer:node:' . $node->nid;

  // Check to see if there is any CSS.
  if (!empty($panelizer->css)) {
    ctools_include('css');
    $filename = ctools_css_retrieve($display->cache_key);
    if (!$filename) {
      $filename = ctools_css_store($display->cache_key, $panelizer->css);
    }
    drupal_add_css($filename, array(
      'group' => CSS_THEME,
    ));
  }

  // We think this is handled as a page, so set the current page display.
  panels_get_current_page_display($display);
  ctools_include('plugins', 'panels');
  $renderer = panels_get_renderer($panelizer->pipeline, $display);
  $info = array(
    'content' => panels_render_display($display, $renderer),
    'no_blocks' => !empty($panelizer->no_blocks),
  );
  return $info;
}