block no se coloca correctamente dentro de content
Buenos días,
He creado un módulo desde 0, y al colocarlo en un page dentro de un menú se me coloca en la parte superior de la página, dejando abajo el menú superior y la página completa.
¿Por qué puede ser?
Un saludo
- Inicie sesión o regístrese para enviar comentarios

Aclaraciones para lograr que el block se muestre correctamente
Hola
Acabo de leer el comentario "Asignar región a un bloque" y me parece que no es suficientemente claro. De modo que le voy a agregarle un par de aclaraciones:
1. Como has desarrollado un módulo desde cero sabes lo que es un hook. Para los que no lo saben son puntos de enganche en los que la "cifra" hook es sustituida por el nombre del módulo, para crear funciones que son llamadas automáticamente por el motor de drupal para configurar y operar el sitio.
1.1 en este caso se trata de usar el hook_block que es usado para definir los bloques (blocks) ofrecidos por el módulo y establecer sus funcionalidades.
se crea mediante una expresión de la forma:
<?php
/* $Id: modulo_de_ejemplo.module
* (este es el nombre del archivo que ofrece el código principal)
*/
// implementación del hook_block
// notar que se reemplaza hook con modulo_de_ejemplo
function modulo_de_ejemplo_block($op = 'list', $delta = 0, $edit = array()){
// lineas de código que ofrecen lo necesario
}
?> // el cierre de etiqueta no se debe escribir en los módulos
Ahora pasemos al asunto que te interesa: La función hook_block debe ofrecer en un array asociativo la información acerca de la estructura del bloque y configurar su funcionamiento; pero en respuesta a los parámetros de entrada
En este caso. El block se presenta cuando el valor del parámetro $op es 'list' o cuando es 'view'. Cuando es 'list' se ofrece en la ṕagina de configuración de bloques para ser parametrizado por los usuarios (con privilegios para hacerlo) y cuando es 'view' es mostrado en las páginas para las que haya sido "apuntado". Otros valores ('edit', 'save', no aplican al caso que tratamos).
Regresemos al hook para establecer la región en la que se desea mostrarlo. El primer problema a resolver es que no todos los 'themes' ofrecen las mismas regiones aunque hay algunas que son comunes a la mayoría. De modo que, es bueno tener a mano varias opciones de región a escoger por defecto de modo que al revisar las ofrecidas por el 'theme' actual se pueda asignar una (si la región por defecto escogida no es implementada por el tema el bloque no se muestra)
<?php
// ... lineas anteriores
function modulo_de_ejemplo_block($op = 'list', $delta = 0, $edit = array()){
$block = array();
switch($op){
case 'list':
// aquí se debe declarar el bloque y establecer la región por defecto
// listo las regiones en las que creo razonable mostrarlo por defecto
$regiones_donde_me_gustaria_mostrar_mi_bloque = array(
'nombre_region_1', ..., 'nombre_region_n');
// determino el default del sistema
//obtiene el nombre del tema activo (como sugiere el comentario anterior)
$default_theme = variable_get('theme_default', 'bartik');
//obtiene el listado de regiones del tema
$regions = system_region_list($default_theme, REGIONS_VISIBLE);
// región por defecto del tema en curso
$region_por_defecto_tema_actual = system_default_region($default_theme);
// Establecer si la region que deseo existe
$region_encontrada = $region_por_defecto_tema_actual;
foreach($regiones_donde_me_gustaria_mostrar_mi_bloque as $region){
if ($regions[$region]){
$region_encontrada = $region;
break;
}
}
// ... instrucciones de declaración del n-esimo bloque (el que deseo)
block[n]['region'] = $region_encontrada; // ASI SE ASIGNA la región
block[n]['visibility'] = 1; // para que sea visible por defecto
break; // cierro el case
case 'view':
switch ($delta){
case n:
// como el bloque del que hablamos es el n-esimo
// se configura para ser mostrado cuando $delta == n
$contenido = ''; // inicializo el valor a devolver en nulo
// siguen ... instrucciones configurando el contenido del bloque.
// Sugiero: aprovechar las superglobales $_GET y $_POST para hacer ajustes
// acordes con la página y el estado de la solicitud del
// visitante
block[n]['content'] = $contenido; // asigno luego de ajustar
// $contenido es lo que verán los visitantes como bloque
break; // cierro case n
break; // cierro case 'view'
}
return $block;
}
// siguen otras instrucciones del módulo
?> // NUNCA CERRAR EL BLOQUE <?php con su cierre de etiqueta '?>' al escribir módulos
UNA ANOTACIÓN FINAL IMPORTANTE:
Los módulos que ofrecen bloques, en general, NO DEBEN ESTABLECER NI LA VISIBILIDAD NI LA REGIÓN en que se muestran ya que estos deben ser ajustados por el usuario final en función de sus necesidades. Sólo cuando los módulos sean de propósito específico o se prearen para un sitio particular, es razonable establecer dichos valores.
Asignar region al bloque
Buenas a tu bloque de seguro no le has asignado una region determinada de tu de tu tema.
puede ser que no le as asignado una para tu bloque, prueba esto o agregalo este hook si no lo tienes. Es un ejemplo
function blocks_prueba_block_info() {//obtiene el nombre del tema activo
$default_theme = variable_get('theme_default', 'bartik');
//obtiene el listado de regiones del tema
$regions = system_region_list($default_theme, REGIONS_VISIBLE);
//si no tiene la región 'sidebar_second'
//activaremos el bloque en la región por defecto
if ($regions['sidebar_second']) {
$region = 'sidebar_second';
}
else {
$region = system_default_region($default_theme);
}
Saludos