Como posso passar parâmetros para um bloco?

8

É possível passar programaticamente parâmetros para um bloco?

underq
fonte

Respostas:

7

Pela outra resposta , os blocos são "burros" e não têm a capacidade de ter argumentos "passados". No entanto, eles podem obter argumentos do contexto da página, como IDs de nós, usuário atual etc.

Você tem realmente duas opções 'fáceis':

  • Escreva seu próprio bloco: é bem fácil se você pode fazer um pouco de PHP. Crie um módulo e implemente hook_block () . Existem muitos exemplos no Drupal.org .
  • Use o módulo Panels e / ou Views: Panels permite criar painéis que podem ter todos os tipos de variáveis ​​e contextos passados, MAS sem um tema especial, o bloco terá que residir na área de conteúdo, não em uma região Drupal; portanto, depende do seu site e de onde você deseja o bloco. O Views também pode criar blocos e receber argumentos da URL da página, usuário atual e também código personalizado através do módulo PHP do Views . As vistas e os painéis funcionam muito bem em conjunto.
Jim Kirkpatrick
fonte
11
Geralmente também com painéis, se o seu tema o suportar, você poderá desativar todos os outros blocos e exibir outro conteúdo que reconhecerá o contexto como "pseudo" blocos.
Malks
2

Você não pode passar nada programaticamente para um bloco AFAIK. Você pode permitir que um bloco seja configurável (usando hook_block_configure em D7). Como alternativa, você pode criar sua própria função de tema e passar argumentos para isso. O que você está tentando fazer?

Andy
fonte
2

Para configurar o filtro contextual, escolha "Fornecer valor padrão", digite => "código php" e use o argumento desejado. ex: retornar arg (1);

hasan
fonte
2

Para o caso especializado (mas generalizado) em que seu bloco é uma exibição de uma Visualização, você pode usar views_embed_view para renderizar o bloco com os parâmetros que ele obtém através dos filtros contextuais da Visualização (ou seja, normalmente a partir da URL).

Por exemplo:

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

Quaisquer parâmetros após o segundo serão passados ​​como valores de filtro contextual para o bloco.

Fonte: Reescrita a partir desta resposta por David Thomas , licenciado CC-BY-SA 3.0

tanius
fonte