プログラムでビューにノードを追加し、fooking_views_pre_renderに次のように設定して、ページャーの「xからyへ」を変更しています。
$view->query->pager->total_items = $count;
$view->query->pager->current_page = isset($params['page']) ? $params['page'] : 0;
$view->query->pager->options['total_pages'] = ceil( $count / $lim );
$view->total_rows = (string) $count;
$view->items_per_page = (string) $view->query->pager->options['items_per_page'];
$view->current_page =isset($params['page']) ? $params['page'] : 0;
10ページあるとしますが、このコードを使用しても何も起こらないようで、何も変更されません。 2ページ目にある場合、次のボタンは表示されません。コードでこれをどのように達成できますか?この結果を得るには、どのオブジェクト、配列を変更する必要がありますか?任意の助けいただければ幸いです。
ありがとう
このようなことを試して、それが役立つかどうかを確認してください
function views_pag_views_pre_build(&$view) {
if ($view->name == "pagination") {
$view->init_pager();
$view->set_items_per_page('10');
}
}
すべての大きな助けをありがとう。 hook_views_pre_renderでは、次の2行のコードを使用しました。
if($view->name=='myview'){ ...
$view->query->pager->total_items = $count;
$view->query->pager->update_page_info();
...
}
そして今、ポケットベルは魅力のように働いています。 :D 1ページあたりの項目の値はビューのUIで設定したため、プログラムで変更/設定する必要はありませんでした。
Drupal 8を使用している場合:あなたが私と同じで、 'hook_views_query_pre_render'フックでビューを変更した場合、ページを更新するために必要なことは次のとおりです。
$view->result = $new_results; // Where $new_results is an array of new rows
$view->total_rows = count($new_results);
$view->pager->total_items = count($new_results);
$view->pager->updatePageInfo(); // After updating page variables then it's important to run this method!
ページャーは変数「total_items」を使用し、ビューオブジェクトは変数「total_rows」を使用することに注意してください...
それが誰かを助けることを願っています!