Posted by cibi.jacob@gmail.com on March 17, 2009 at 1:01pm
Jump to:
| Project: | Views embed |
| Version: | 6.x-1.x-dev |
| Component: | Code |
| Category: | support request |
| Priority: | critical |
| Assigned: | Unassigned |
| Status: | active |
Issue Summary
How can we set the items per page to a view, programatically?
The similar code we are using in drupal 5 is as follows:
$view = views_get_view('visual_articles');
print (views_build_view('embed', $view, array(0 => '1', 6 => 'video'), $view->use_pager, $view->nodes_per_block));
Can u please give me the corresponding code in druapal 6
Thanks in advance.
Cibi
Comments
#1
I had the same question.
I found useful info here:
http://pedroposada.com/blog/embed-views-2-nodes.html
<?php$view = views_get_view($viewname);
$view->set_arguments( array( $arg ) );
$view->set_display($displayId);
$view->set_items_per_page($number);
$view->execute();
$count = count( $view->result );
print $view->preview($display_id, $args);
?>
#2
$args = array();
$view = views_get_view('viewName');
$view->set_display('default');
$view->display_handler->set_option('items_per_page', 1);
print $view->preview('default', $args);
nothing but the above code here worked for me
replace viewName by your view name and voila!
#3
if you want to do the same thing without embedding the view, you'll need to create a module (trust me, there's no other way)
then use hook_views_pre_execute()
#4
Thanks so much, alienzed. After a few hours of frustration, stumbling into your solution in #2 worked perfectly.
#5
And where does one put this snippet of code? In a block, in a node, in a view, in a template? Sorry, I'm not strong on the coding side, but I would really like my users to set the number of results per page in a view. Can someone give me the "Dummies" version?
#6
Well, I can tell you, don't put it into a block and apply it to the whole site. It will take your site down if it does not work. Believe me, I just learned the hard way. Thank goodness it was as simple as replacing the field content in the db to get it back.
If I figure out where to put it that makes logical sense and works, I'll be the first to share my results.
Best Regards,
Daboo
#7
I found what I think is a much easier way of pulling this off if Views_3 is not an option yet.
using hook_form_alter apply the following to the appropriate $form:
//Add select number of pages filter.
$pager_options = array(20, 30, 50);
$form['views_page_filter'] = array(
'#type' => 'select',
'#options' => $pager_options,
'#default_value' => 1,
'#title' => t('Select items per page'),
);
$pages = $pager_options[$form_state['input']['views_page_filter']];
$form_state['view']->set_items_per_page($pages);
Though this will only work if you have an exposed filter for the view.