Le point de vue que vous souhaitez utiliser est celui hook_views_pre_build
qui est appelé avant la génération de la requête. Maintenant, cela suppose que vous avez une certaine expérience de développement de modules de base et que vous êtes familier avec les vues api.
Vous devriez pouvoir faire:
/*
* Implementation of hook_views_pre_build().
*/
function hook_views_pre_build(&$view) {
// Make sure this is only for the specific view you want to modified
if ($view->name == "foo_bar") {
// Get the x-y value from where you're storing it (in your example the node object).
$pager_count = get_count_for_this_node();
// Lets also make sure that this is a number so we won't destroy our view.
if (is_numeric($pager_count)) {
// Now lets set the pager item to what ever out count is.
$view->pager['items_per_page'] = $pager_count;
}
}
}
Ci-dessus, nous utilisons un hook de vues qui est appelé avant que la requête de vue soit construite de cette façon, le pager et tout le reste refléteront le changement.
Attention: les crochets de vue ne doivent être utilisés que si vous comprenez ce qui se passe. Le code ci-dessus est écrit pour views-2.x.
J'espère que cela t'aides.
$view->items_per_page = $pager_count;
Pour Drupal 7, Only doit écrire ce qui suit:
Dans l'exemple:
J'utilise l'exemple de code par @ericduran.
la source
Vous devez utiliser la fonction de prétraitement des vues
la source
Pour mettre à jour le résultat des vues et le téléavertisseur dans hook_views_pre_render, vous pouvez procéder comme suit:
Cela devrait fonctionner !! ;)
la source
Le code de @tanmayk a fait l'affaire pour moi. Dans hook_views_pre_render ajouté seulement ces 2 lignes de code
Mais je n'avais pas besoin d'ajouter les résultats à la vue.
la source