function view::render
Render this view for a certain display.
Note: You should better use just the preview function if you want to render a view.
Parameters
string $display_id: The machine name of the display, which should be rendered.
Return value
array|string|null Return the output of the rendered view or NULL if something failed in the process.
File
-
includes/
view.inc, line 1258
Class
- view
- An object to contain all of the data to generate a view.
Code
public function render($display_id = NULL) {
$this->execute($display_id);
// Check to see if the build failed.
if (!empty($this->build_info['fail'])) {
return;
}
if (!empty($this->build_info['denied'])) {
return;
}
drupal_theme_initialize();
$start = microtime(TRUE);
if (!empty($this->live_preview) && variable_get('views_show_additional_queries', FALSE)) {
$this->start_query_capture();
}
$exposed_form = $this->display_handler
->get_plugin('exposed_form');
$exposed_form->pre_render($this->result);
// Check for already-cached output.
if (!empty($this->live_preview)) {
$cache = FALSE;
}
elseif (views_view_has_form_elements($this) && isset($_POST['form_id']) && $_POST['form_id'] == views_form_id($this)) {
$cache = FALSE;
}
else {
$cache = $this->display_handler
->get_plugin('cache');
}
if ($cache && $cache->cache_get('output')) {
}
else {
if ($cache) {
$cache->cache_start();
}
// Run pre_render for the pager as it might change the result.
if (!empty($this->query->pager)) {
$this->query->pager
->pre_render($this->result);
}
// Initialize the style plugin.
$this->init_style();
// Give field handlers the opportunity to perform additional queries
// using the entire resultset prior to rendering.
if ($this->style_plugin
->uses_fields()) {
foreach ($this->field as $id => $handler) {
if (!empty($this->field[$id])) {
$this->field[$id]
->pre_render($this->result);
}
}
}
$this->style_plugin
->pre_render($this->result);
// Let modules modify the view just prior to rendering it.
foreach (module_implements('views_pre_render') as $module) {
$function = $module . '_views_pre_render';
$function($this);
}
// Let the themes play too, because pre render is a very themey thing.
foreach ($GLOBALS['base_theme_info'] as $base) {
$function = $base->name . '_views_pre_render';
if (function_exists($function)) {
$function($this);
}
}
$function = $GLOBALS['theme'] . '_views_pre_render';
if (function_exists($function)) {
$function($this);
}
$this->display_handler->output = $this->display_handler
->render();
if ($cache) {
$cache->cache_set('output');
}
}
$this->render_time = microtime(TRUE) - $start;
$exposed_form->post_render($this->display_handler->output);
if ($cache) {
$cache->post_render($this->display_handler->output);
}
// Let modules modify the view output after it is rendered.
foreach (module_implements('views_post_render') as $module) {
$function = $module . '_views_post_render';
$function($this, $this->display_handler->output, $cache);
}
// Let the themes play too, because post render is a very themey thing.
foreach ($GLOBALS['base_theme_info'] as $base) {
$function = $base->name . '_views_post_render';
if (function_exists($function)) {
$function($this, $this->display_handler->output, $cache);
}
}
$function = $GLOBALS['theme'] . '_views_post_render';
if (function_exists($function)) {
$function($this, $this->display_handler->output, $cache);
}
if (!empty($this->live_preview) && variable_get('views_show_additional_queries', FALSE)) {
$this->end_query_capture();
}
return $this->display_handler->output;
}