web-dev-qa-db-ja.com

EntityFieldQuery表示ページャー

結果をフェッチするためにEntityFieldQueryを使用してページャーを表示するにはどうすればよいですか?完全な例が見つかりません。

私は同様にしています: Sentable、ページングされたテーブルはEntityFieldQueryを使用して取得されます

しかし、単純なページネーションリンク(次のページごとに1、2、3 ...)を出力する部分がありません。

6
NenadP

不足しているのは、作成しているコンテンツにtheme('pager')からの戻り値を追加することだけだと思います。

これは、システム内のすべてのノードのティーザーを1ページあたり10ずつ表示する小さな例です。これをページのコールバック関数で使用します。

$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;

あなたのコメントに基づくより具体的な:

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

また、これに問題があります-デバッグステートメント initializePagerオプションの$ elementパラメータ が0ではなく1に設定されていることを示していました。

表示されるページャーが1つだけの場合は、明示的に0に設定してみてください。$query->pager(10, 0);

4
lazysoundsystem