web-dev-qa-db-ja.com

theme( 'pager')を使用するにはどうすればよいですか?

EntityFieldQuery display pager で説明されているように、theme('pager')の使用方法を理解するのに問題があります。

私はそれを動作させることができません(ページャーと結果のページへのリンクを表示)。

EntityFieldQuerypager(10)は自動的にページャーを呼び出しますか? print(theme('pager'))で表示する必要がありますか?

この機能はDrupalコア(7.15)に含まれていますか?

Template.phpでクエリを実行し、変数を介してクエリ結果をarticle.tpl.phpに挿入しています。

回避策として、2つのクエリを実行することを考えています。1つは条件を満たすノードの数を調べ、番号付きのリンクを出力し、それらのリンクに変数をアタッチし、別のクエリで変数を読み取り、結果のノードを選択しますrange($i,$j)を使用します。

6
NenadP

EntityFieldQuerypager(10)は自動的にページャーを呼び出しますか?

はい; PagerDefaultクラスから新しいデルタを取得することにより、単一ページ上の複数のページャーが競合するという通常の問題も回避します。

print(theme('pager'))で表示する必要がありますか?

はい(ただし、表示する結果が2ページ分以上ある場合に限ります)。

この機能はDrupalコア(7.15)に含まれていますか?

はい。

これは私にとっては完璧に機能します:

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

$results = $query->execute();
$nodes = node_load_multiple(array_keys($results['node']));

$build = array(
  'nodes' => node_view_multiple($nodes),
  'pager' => array(
    '#theme' => 'pager',
  )
);
_

これはメニューコールバック関数から返されるため、drupal_render()を介して渡されます。その場合、ノードティーザーのリストが、予想されるページャーの真下に表示されます。

同じ例がうまくいかない場合は、インストールに問題があるか、カスタム/コントリビュートモジュールにコアページャーシステムと競合しているものがあるはずです。

7
Clive