結果をフェッチするためにEntityFieldQueryを使用してページャーを表示するにはどうすればよいですか?完全な例が見つかりません。
私は同様にしています: Sentable、ページングされたテーブルはEntityFieldQueryを使用して取得されます
しかし、単純なページネーションリンク(次のページごとに1、2、3 ...)を出力する部分がありません。
不足しているのは、作成しているコンテンツに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');
}
また、これに問題があります-デバッグステートメント initializePager は オプションの$ elementパラメータ が0ではなく1に設定されていることを示していました。
表示されるページャーが1つだけの場合は、明示的に0に設定してみてください。$query->pager(10, 0);