A friend recently came to me with the following question:
I have a site that has a mode optimized for low-bandwidth use. Can I change the number of rows returned by a view based on the theme?
The Views 2 API has a function called hook_views_query_alter()
which allows you to modify the View object before it pulls the results from the database.
In order to use views hooks, you must create a module that registers itself as using the Views API:
function drupaleasy_views_api() {
return array(
'api' => 2,
'path' => drupal_get_path('module', 'drupaleasy') .'/includes',
);
}
Assuming your module is called drupaleasy.module
. In the includes
directory in your module folder, create a drupaleasy.views.inc
file. The whole path would be something like sites/all/modules/drupaleasy/includes/drupaleasy.views.inc
.
In this new file, create a function, and modify the view object appropriately:
function drupaleasy_views_query_alter(&$view, &$query) {
/* figure out which theme you're using */
$view->pager['items_per_page'] = 3;
}
Even though my friend was using a theme, you may want to make this change based on some other context.
For another tutorial on hook_views_query_alter(), check out this post by Nick Lewis.
Comments
Pingback
[...] I need to change the number of items returned by a view, based on the theme! from drupaleasy.com [...]
Pingback
[...] coding I need to change the number of items returned by a view, based on the theme! from drupaleasy.com Alter views using pre alter function from drupal.org advanced drupal views [...]