Pager für Views-Block manuell einbinden
Eingetragen von jan.s (44)
am 14.12.2009 - 02:02 Uhr in
am 14.12.2009 - 02:02 Uhr in
Hallo zusammen,
ich binde einen Views-Block manuell in ein eigenes Modul ein. Es wird jedoch kein Pager angezeigt. Wenn ich eine Views-Page einbinde dann jedoch ja.
Ich habe jedoch in der View einige Blöcke, welche ich einbinden möchte.
Ich mache dies so:
$display = $view->execute_display('block_1', array(arg(1), arg(2)));
$output = $display['content'];
Nun will ich den Pager mit ausgeben, wie kann ich ihn manuell einfügen? Oder ist das ein Bug im Views Modul, dass der Pager in manuell aufgerufenen Blöcken nicht eingebunden wird?
Ich hoffe, mir kann jemand helfen. Ich habe mich damit jetzt schon einige Stunden aufgehalten... Total blöd irgendwie, ich finde das Problem nicht!
Viele Grüße
Jan
- Anmelden oder Registrieren um Kommentare zu schreiben
views_embed_view()
am 14.12.2009 - 03:06 Uhr
Eigentlich sollte man Views mit
<?php
views_embed_view()
?>
einbinden. Der Pager sollte dann so dargestellt werden wie er im View konfiguriert ist - der View steuert die Anzeige des Pager.
------------------------
Quiptime Group
Danke!! Das geht! :) Wofür
am 14.12.2009 - 10:00 Uhr
Danke!! Das geht! :)
Wofür nutzt man denn $view->execute_display() ?
$view->execute_display
am 14.12.2009 - 10:12 Uhr
Siehe diesen Kommentar.
Und views::execute_display.
Stefan
--
Sei nett zu Deinem Themer!
Danke Stefan! Jetzt stellt
am 14.12.2009 - 11:31 Uhr
Danke Stefan!
Jetzt stellt sich mir ein weiteres Problem. Ich möchte einen Filter in dem eingebetteten View verwenden. Aber da gibt es kaum aussagekräftige Quellen. Weiß jemand, wie das möglich ist? Das Standard-Filterformular sollte nicht angezeigt werden, die View soll nur auf die Parameter im Querystring reagieren. Im Moment passiert jedoch nichts, obwohl der Filter sogar auf Exposed gestellt ist.
Binde ich anstatt des Blocks eine Page ein, wird das Filterformular angezeigt. Wie kann ich den Block dazu bringen, dass er auf die Argumente im Querystring reagiert?
view filter
am 14.12.2009 - 11:41 Uhr
Wie kann ich den Block dazu bringen, dass er auf die Argumente im Querystring reagiert?
Du kannst die Filter per Hand über
$view->filter
verändern. Zum Auslesen des Query-Strings gibt es die Funktion arg.hth,
Stefan
--
Sei nett zu Deinem Themer!
Wenn Du Dir die
am 14.12.2009 - 11:41 Uhr
Wenn Du Dir die Dokumentation zu views_embed_view ansiehst, wirst Du feststellen, das das dritte Argument ein Array mit Argumenten für den View ist. Damit bekommst Du die auch in einen Block, während normalerweise Views im Block-Display Argumente über die URL nicht annehmen kann. Die muß man über PHP mit etwas Code hineinbringen.
Beste Grüße
Werner
Hallo Werner, genauso mache
am 14.12.2009 - 11:48 Uhr
Hallo Werner,
genauso mache ich es auch gerade:
$queryString = explode('?', trim($_SERVER['QUERY_STRING']));
parse_str($queryString[0], $temp);
$args = array(
$temp['minpersonen']
);
Ich dachte nur, das ist ja irgendwie mehr getrickst und nicht mehr der "echte" Filter.
Ich werde mich nochmal mit $view->filter auseinandersetzen. Vielleicht gibts da noch irgendwelche Vorteile, die ich gerade nicht sehe. Sonst ist die Übergabe als Argument sicher eine gute und einfache Lösung.
Viele Grüße
Jan
Leider zu früh gefreut :(
am 14.12.2009 - 12:17 Uhr
Leider zu früh gefreut :( In den Argumenten habe ich nicht die möglich auf "größer" oder "kleiner" einzugrenzen. Damit muss ich nun doch versuchen, den Filter zum Laufen zu bekommen.
Kann ich sicher den Filter über $view->filter anpassen, wenn ich den Block später über views_embed_view() einbinde? Das sind doch zwei komplett unterschiedliche Dinge oder sehe ich das falsch? $view->filter ist zu Beginn leer, aber auch wenn ich es "befülle", dann ändert sich am Output der View nichts. Irgendwie stehe ich auf dem Schlauch und die Views Doku bringt mich auch nicht weiter... :(
Irgendwie will das alles
am 14.12.2009 - 16:04 Uhr
Irgendwie will das alles nicht so wie es soll ;-)
Ich mache es zur Zeit so:
$view = views_get_view('unterkunftlisten');
$view->set_display('page_1');
$view->display_handler->set_option('items_per_page', 0);
$view->set_arguments(array("1", "2", .....));
$output = $view->preview();
Das klappt jetzt auch schonmal wunderbar. :)
Genauso wie ich aber auf dieser Seite den Wert "items_per_page" manuell verändere, möchte ich die Möglichkeit schaffen, die Lsite nach 4 Kriterien zu sortieren. Zur Zeit nutze ich die Tabellenansicht, da geht das ja standardmäßig. Ich muss jedoch auf die "unformatted" Variante wechseln, um mehr Möglichkeiten zu haben, ich möchte keine Tabelle haben. Sortieren soll trotzdem möglich sein. Wie kann man denn Sortierungsparameter in der Url an das Views Objekt übergeben? SObald ich nicht mehr den Tabellentyp ausgewählt habe, werden die Querystring Parameter nicht mehr beachtet... Wie kann man das verhindern?
Gibt es sonst noch eine gute Dokumentation zu Views 2 oder Tutorials? Ich hab das Gefühl, dass ich schon das ganze Internet durchforstet habe. Allein mit der API kommt man nicht wirklich zum Ziel in diesem Fall. :(
Viele Grüße
Jan