Embedding a view programmatically is not too difficult, but what about passing it a value for an exposed filter? This snippet gives a simple example of how to modify the View object in a more meaningful way before rendering it.
<?php
$name = 'my_view';
$display = 'block_1';
$view = views_get_view($name);
$view->set_display($display);
?>
If you'd like to pass in exposed filter values, define these properties before calling $view->preview():
<?php
// The $exposed_filters keys must correctly correspond with the actual keys of your view's exposed filters.
$exposed_filters = array(
'keys' => 'sail',
'term_node_tid_depth' => 'All',
);
// Pass in exposed filter values. array_merge() order prioritizes user input.
$view->exposed_input = array_merge($exposed_filters, (array)$view->exposed_input);
$view->exposed_raw_input = array_merge($exposed_filters, (array)$view->exposed_raw_input);
$view->exposed_data = array_merge($exposed_filters, (array)$view->exposed_data);
?>
Print the view!
<?php
$output = $view->preview();
if ($view->result) {
print $output;
}
$view->destroy();
?>
is a solution also for drupal
is a solution also for drupal 6.x?
which is a solution for to do this :
I have three views page (that are 3 horiz menus in the header)
V1 V2 V3;
on V3 I created one exposed filter F3 (a select); the block is in the header so have
F3
V1 V2 V3
so the filter is only for V3;
how can instead have a common filter
F123
V1 V2 V3
so when click on V1 is applied own view with the filter value already selected in F123;
or if I am on V1 or V2 .. if I change the selection in F123 the view V1 or V2 ... are reloaded and filtered by the new value
A much more convenient way...
Is using $view->set_exposed_input($exposed_filters);
totally agree with Strae, but
totally agree with Strae, but great post anyways
Add new comment