I need to change the number of items returned by a view, based on the theme!

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

[...] 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 [...]

Sign up to receive email notifications of whenever we publish a new blog post or quicktip!

Name