[gelöst] Views: Dynamischer Wert bei "Beiträge pro Seite" verwenden. Nur wie?
am 17.11.2010 - 15:55 Uhr in
Hallo Drupal-Gemeinde,
bei der Entwicklung meiner Website stoße ich gerade an die Grenzen meiner Kenntnisse bezüglich der Verwendung von Views. Ich versuche mein Szenario kurz zu beschreiben:
Ich habe eine View (Block), die mir Artikel vom Type "Page" liefert. Wenn ich möchte, dass 5 Einträge pro Seite angezeigt werden (Pager ist aktiv), so ändere ich den Wert bei "Beiträge pro Seite" auf 5. Ich möchte diesen Wert jedoch nicht statisch festlegen. Ich will beispielsweise einen Wert über variable_get("anzahl_beiträge", null); verwenden.
Was muss ich tun um dieses Ziel zu erreichen? Das Modul "Views Modify Query" scheint mir nicht das Richtige, da im Query-Array kein Hinweis auf die SQL-Funktion "LIMIT" zu finden ist.
Über eine Antwort, Tipps und Hinweise freue ich mich sehr
Sebastian
- Anmelden oder Registrieren um Kommentare zu schreiben
hook_views_default_views_alter
am 17.11.2010 - 16:12 Uhr
Hallo.
Das funktioniert folgendermaßen:
* Du exportierst Dir den View und legst ihn mittels
hook_views_default_views()
als Standardview in ein eigenes Modul* Im Modul implementierst Du
views_default_views_alter(&$views)
<?php
function test_views_default_views_alter(&$views) {
if (isset($views['test])) {
$view = $views['test'];
$items_per_page = 0;
$display_names = array('page_test');
foreach ($display_names as $display_name) {
if (isset($view->display[$display_name])) {
// Get value from display (defined in hook_views_default_views).
$items_per_page = $view->display[$display_name]->display_options['items_per_page'];
// Set value from variable (with fallback to original value).
$view->display[$display_name]->display_options['items_per_page'] = variable_get('test-items_per_page-'. $display_name, $items_per_page);
}
}
}
}
?>
Damit kannst Du den Wert des Pagers über eine Variable überschreiben. Im obigen Beispiel würde diese "test-items_per_page-page_test" heissen.
Wenn man sich dann dazu noch eine kleine Konfigurationsseite bastelt, ist das eine richtig schicke Option für Kunden :)
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hallo Stefan, vielen Dank
am 17.11.2010 - 16:49 Uhr
Hallo Stefan,
vielen Dank schonmal für die rasche Antwort! Schritt 2 Deiner Anleitung verstehe ich - allerdings ist mir der Part "Du exportierst Dir den View und legst ihn mittels hook_views_default_views() als Standardview in ein eigenes Modul" nicht schlüssig. Hättest Du da noch einen kleinen Tipp für mich :)
Liebe Grüße
Sebastian
Nachtrag:
Also ich habe nun alles soweit hinbekommen. Über "var_dump()" kann ich auch sehen, dass der Wert angepasst wurde. Die View habe ich über "views_embed_view()" eingebunden, allerdings wird dort noch immer der statische Wert genutzt. Was könnte ich vergessen haben?
Gelöst! Alles geht!
am 17.11.2010 - 16:55 Uhr
Gelöst! Alles geht! Perfekt!
VIELEN DANK!!!!
Gelöst! Alles geht!
am 17.11.2010 - 17:39 Uhr
Wenn Du jetzt noch kurz beschreibst wie Du es gelöst hast wäre das klasse ;-)
„Nichts geschieht ohne Risiko, aber ohne Risiko geschieht auch nichts.“
hook_views_default_views
am 18.11.2010 - 11:57 Uhr
Hallo.
Wenn Du jetzt noch kurz beschreibst wie Du es gelöst hast wäre das klasse ;-)
Wie schon geschrieben: der View muss exportiert werden und dann über eine Implementierung von
hook_views_default_views()
in ein Modul packen.Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.