web-dev-qa-db-fra.com

Pageur d'affichage EntityFieldQuery

Comment afficher un téléavertisseur en utilisant EntityFieldQuery pour récupérer les résultats? Je ne trouve pas d'exemple complet.

Je fais simmilar pour: Table triable et paginée récupérée à l'aide de EntityFieldQuery

Mais je manque une partie pour produire des liens de pagination simples (1,2,3 ... pour chaque page suivante).

6
NenadP

Je soupçonne que la seule chose qui vous manque est d'ajouter le retour de theme('pager') au contenu que vous créez.

Ceci est un petit exemple qui montre des teasers pour tous les nœuds du système, avec 10 par page. Vous utiliseriez ceci dans une fonction de rappel de page:

$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
  ->pager(10);

$results = $query->execute();

$content = node_view_multiple(node_load_multiple(array_keys($results['node'])));

$build = array(
  'content' => $content,
  'pager' => array(
    '#theme' => 'pager',
    '#weight' => 10
  )
);

return $build;

Plus spécifique en fonction de vos commentaires:

if ($type == 21) { 
  $query = new EntityFieldQuery(); 

  $entities = $query->entityCondition('entity_type', 'node')
    ->propertyCondition('type', 'product') 
    ->fieldCondition('field_razred', 'tid', array (607,608,609,610), 'IN')
    ->pager(10) // this is the bit you're missing
    ->execute(); 

  $nodes = node_load_multiple(array_keys($entities['node'])); 
  print render(node_view_multiple($nodes, 'teaser')) . theme('pager');
}
8
Clive

Également eu quelques problèmes avec cela - les instructions de débogage initializePager ont montré que le paramètre optionnel $ element était mis à 1 plutôt qu'à 0.

S'il n'y a qu'un seul pager affiché, essayez de le régler explicitement sur 0. $query->pager(10, 0);

4
lazysoundsystem