it-swarm.com.de

Wie kann ich Parameter an einen Block übergeben?

Ist es möglich, Parameter programmgesteuert an einen Block zu übergeben?

8
underq

Per die andere Antwort sind Blöcke 'dumm' und haben nicht die Fähigkeit, Argumente 'übergeben' zu haben. Sie können jedoch Argumente aus dem Kontext der Seite abrufen, z. B. Knoten-IDs, aktueller Benutzer usw.

Sie haben wirklich zwei "einfache" Möglichkeiten:

  • Schreiben Sie Ihren eigenen Block: Es ist ziemlich einfach, wenn Sie ein wenig PHP können. Erstellen Sie ein Modul und implementieren Sie hook_block () . Es gibt viele Beispiele auf Drupal.org .
  • Verwenden Sie das Modul Panels und/oder Views: Panels ermöglicht das Erstellen von Panels, in denen alle Arten von Variablen und Kontexten übergeben werden können, ABER ohne ein spezielles Thema muss der Block im Inhaltsbereich leben , nicht eine Drupal Region; dies hängt also von Ihrer Site ab und davon, wo Sie den Block haben möchten. Ansichten können auch Blöcke erstellen und Argumente von der Seiten-URL, dem aktuellen Benutzer und auch benutzerdefiniertem Code über empfangen Das Modul Views PHP . Views und Panels arbeiten sehr gut zusammen.
7
Jim Kirkpatrick

Für den speziellen (aber weit verbreiteten) Fall, in dem Ihr Block eine Anzeige einer Ansicht ist, können Sie views_embed_view , um den Block mit Parametern zu rendern, die er über die Kontextfilter der Ansicht erhält (dh normalerweise über die URL).

Zum Beispiel:

print views_embed_view('news', 'panel_pane_1', 'world');

Alle Parameter nach der Sekunde werden als Kontextfilterwerte an den Block übergeben.

Quelle: Umgeschrieben von diese Antwort von David Thomas , lizenziert CC-BY -SA 3.

2
tanius

Kontextfilter konfigurieren Wählen Sie "Standardwert bereitstellen" type => "PHP-Code" und verwenden Sie das gewünschte Argument. Beispiel: return arg (1);

2
hasan

Sie können nichts programmgesteuert an einen Block AFAIK übergeben. Sie können zulassen, dass ein Block konfiguriert werden kann (mit hook_block_configure in D7). Alternativ können Sie Ihre eigene Themenfunktion erstellen und Argumente an diese übergeben. Was versuchst du zu tun?

2
Andy