¿Cómo puedo pasar parámetros a un bloque?

8

¿Es posible pasar parámetros mediante programación a un bloque?

underq
fuente

Respuestas:

7

Según la otra respuesta , los bloques son 'tontos' y no tienen la capacidad de tener argumentos 'pasados'. Sin embargo, pueden tomar argumentos del contexto de la página, como ID de nodo, usuario actual, etc.

Tienes dos opciones 'fáciles' realmente:

  • Escribe tu propio bloque: es bastante fácil, si puedes hacer un poco de PHP. Cree un módulo e implemente hook_block () . Hay muchos ejemplos en Drupal.org .
  • Use los paneles y / o el módulo Vistas: los paneles le permiten crear paneles que pueden tener todo tipo de variables y contextos pasados, PERO sin un tema especial, el bloque tendrá que vivir en el área de contenido, no en una región de Drupal; por lo tanto, depende de su sitio y de dónde desea el bloqueo. Las vistas también pueden crear bloques y recibir argumentos de la URL de la página, el usuario actual y también el código personalizado a través del módulo PHP Vistas . Las vistas y los paneles funcionan muy bien juntos.
Jim Kirkpatrick
fuente
1
Por lo general, también con paneles, si su tema lo admite, puede desactivar todos los demás bloques y mostrar otro contenido que será sensible al contexto como "pseudo" bloques.
Malks
2

No puede pasar nada programáticamente a un bloque AFAIK. Puede permitir que un bloque sea configurable (usando hook_block_configure en D7). Alternativamente, podría crear su propia función de tema, y ​​puede pasar argumentos a eso. ¿Qué es lo que estás tratando de hacer?

Andy
fuente
2

Configure el filtro contextual, elija "Proporcionar valor predeterminado" type => "código php" y use el argumento que desee. Ej: return arg (1);

Hasan
fuente
2

Para el caso especializado (pero generalizado) en el que su bloque es una visualización de una Vista, puede usarlo views_embed_viewpara representar el bloque con los parámetros que obtiene a través de los filtros contextuales de la Vista (es decir, normalmente desde la URL).

Por ejemplo:

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

Cualquier parámetro después del segundo se pasará como valores de filtro contextual al bloque.

Fuente: Reescrita a partir de esta respuesta por David Thomas , con licencia CC-BY-SA 3.0

Tanius
fuente