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


8

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

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.

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?


2

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


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.