Come posso passare i parametri a un blocco?


8

È possibile passare a livello di codice i parametri a un blocco?

Risposte:


7

Per l'altra risposta , i blocchi sono "stupidi" e non hanno la possibilità di "passare" gli argomenti. Tuttavia, possono prendere argomenti dal contesto della pagina, come ID nodo, utente corrente ecc.

Hai due scelte 'facili' davvero:

  • Scrivi il tuo blocco: è abbastanza facile, se puoi fare un po 'di PHP. Crea un modulo e implementa hook_block () . Ci sono molti esempi su Drupal.org .
  • Usa i pannelli e / o il modulo Viste: i pannelli ti consentono di creare pannelli in cui possono passare tutti i tipi di variabili e contesti, MA senza un tema speciale il blocco dovrà vivere nell'area del contenuto, non in una regione di Drupal; quindi dipende dal tuo sito e da dove vuoi il blocco. Le viste possono anche creare blocchi e ricevere argomenti dall'URL della pagina, dall'utente corrente e anche dal codice personalizzato tramite il modulo PHP Views . Viste e pannelli funzionano molto bene insieme.

1
Anche in generale con i pannelli, se il tuo tema lo supporta, puoi disattivare tutti gli altri blocchi e visualizzare altri contenuti che saranno sensibili al contesto come blocchi "pseudo".
Malks,

2

Non è possibile passare nulla a livello di programmazione a un blocco AFAIK. È possibile consentire la configurazione di un blocco (utilizzando hook_block_configure in D7). In alternativa, puoi creare la tua funzione tema e puoi passare argomenti a questo. Cosa stai cercando di fare?


2

Configura filtro contestuale scegli "Fornisci valore predefinito" tipo => "codice php" e usa l'argomento desiderato. es: return arg (1);


2

Per il caso specializzato (ma diffuso) in cui il blocco è una visualizzazione di una vista, è possibile utilizzare views_embed_viewper eseguire il rendering del blocco con i parametri che ottiene tramite i filtri contestuali della vista (ovvero, normalmente, dall'URL).

Per esempio:

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

Eventuali parametri dopo il secondo verranno passati come valori di filtro contestuali al blocco.

Fonte: riscritto da questa risposta di David Thomas , con licenza CC-BY-SA 3.0

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.