it-swarm.com.de

Ändern Sie den Pager für Ansichten programmgesteuert

Ich füge einer Ansicht programmgesteuert Knoten hinzu und ändere den Pager 'x aus y', indem ich in hook_views_pre_render Folgendes festlege:

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

Nehmen wir an, es gibt 10 Seiten, aber selbst mit diesem Code scheint nichts zu passieren, nichts wird geändert. Auf der zweiten Seite wird die nächste Schaltfläche nicht angezeigt. Wie kann dies mit Code erreicht werden? Welches Objekt, Array sollte ich ändern, um dieses Ergebnis zu erzielen? Jede Hilfe wäre dankbar.

Vielen Dank

4
adevms

Versuchen Sie so etwas und sehen Sie, ob es hilft

function views_pag_views_pre_build(&$view) {
    if ($view->name == "pagination") {
            $view->init_pager();
            $view->set_items_per_page('10');

    }
}
9
Ali Nouman

Vielen Dank für die tolle Hilfe. In hook_views_pre_render habe ich diese 2 Codezeilen verwendet:

if($view->name=='myview'){ ...
   $view->query->pager->total_items = $count;       
   $view->query->pager->update_page_info();
...
}

Und jetzt arbeitet der Pager wie ein Zauber. : D Die Elemente pro Seite Wert, den ich in den Ansichten UI eingestellt habe, so dass ich das nicht programmgesteuert ändern/einstellen musste.

3
adevms

Für diejenigen, die Drupal 8: Wenn Sie wie ich sind und Änderungen an Ihrer Ansicht im Hook 'hook_views_query_pre_render' vorgenommen haben, müssen Sie nur Folgendes tun, um die Seite zu aktualisieren:

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

Bitte beachten Sie, dass der Pager die Variable 'total_items' und das Ansichtsobjekt die Variable 'total_rows' verwendet ...

Hoffe das hilft jemandem!

2
ph08n1x