Estoy usando Drupal 7. En este momento, tengo un menú principal de navegación y un selector de idioma que existe en el encabezado de mi sitio web. Los coloqué allí yendo a CMS> Estructura> Bloques y luego arrastrando los bloques a la región del encabezado.
¿Cómo ubico programáticamente estos bloques en el encabezado?
block_example_block_info()
y el valor de 'región' podrían ser útiles para probar.Respuestas:
Para alterar la región donde se colocan los bloques definidos por otros módulos, puede implementar hook_block_info_alter () , que recibe los siguientes argumentos:
$blocks
(aprobado por referencia): la matriz que contiene las definiciones de bloque, codificadas por módulo y delta$theme
: el tema para el que se definen los bloques$code_blocks
: los bloques definidos a partir de lashook_block_info()
implementaciones, antes de que sus valores sean anulados por los valores obtenidos de la base de datosfuente
Es legítimo agregar una matriz renderizable a cualquier región de página en hook_page_build (). Ejemplo de Drupal 7 para agregar un minipanel a la región de pie de página.
Esta es la misma técnica que utiliza el módulo de contexto.
Nota: no necesita habilitar block.module para que esto funcione.
fuente
En D6 sería esencialmente
En D7 creo que es
pero todavía me estoy poniendo al día con D7.
fuente
drupal_add_region_content()
es un callejón sin salida, ya que está destinado a las páginas de instalación / actualización.Si está agregando un bloque personalizado, haga esto usando hook_block_info, estableciendo la opción de estado en 1 y la opción de región en la región en la que desea colocar el bloque.
Ejemplo:
Si desea cambiar un bloque ya existente, usaría hook_block_info_alter () en su lugar, la actualización de las mismas opciones se muestra a continuación.
Ejemplo:
Para obtener más información, consulte https://api.drupal.org/api/drupal/modules%21block%21block.api.php/function/hook_block_info/7
fuente
Este código se basa en @ jonhattan's, pero el suyo no representa el contenedor de bloques HTML o enlaces contextuales. También proporcioné una manera simple de especificar todos los bloques y regiones en un solo lugar.
Nota: a diferencia de su código, usted necesita el block.module instalado.
fuente
Esta no es la mejor forma, pero puede colocar manualmente el contenido en la matriz de páginas de esta manera ...
Aunque deberías seguir usando Context o solo bloques centrales. Hacer nuevos complementos no es tan malo como parece. Simplemente nombre los archivos correctamente, configure un disparador y una prueba. ejemplo .
fuente
También puedes ajustar bloques en tu tema como:
fuente