Estas en: Home > hidden

Entradas etiquetadas con hidden

Ocultar el bloque de contenido principal (main content block) de la página principal en Drupal

0

Primero debes crear un nuevo tipo de contenido, yo lo he llamado ‘home’, además en la descripción he indicado que no se genere ningún contenido de ese tipo.

Segundo, en la configuración del bloque del contenido principal nos vamos al apartado de ‘Tipos de contenido’ y seleccionamos ‘home’ para que muestre solo ese tipo de contenido.

En el bloque node que está dentro del core de Drupal abrimos el archivo node.module y vamos a la linea 2557 o al método node_page_default(), nos aparecerá este código:

[codesyntax lang=»php» lines_start=»2572″ title=»node.module»]

<?php

drupal_set_title(t('Welcome to @site-name', array('@site-name' => variable_get('site_name', 'Drupal'))), PASS_THROUGH);
$default_message = '<p>' . t('No front page content has been created yet.') . '</p>'; 
$default_links = array();

if (_node_add_access()) { 
	 $default_links[] = l(t('Add new content'), 'node/add'); 
} 

if (!empty($default_links)) { 
	$default_message .= theme('item_list', array('items' => $default_links)); 
} 

$build['default_message'] = array( 
	'#markup' => $default_message, 
	'#prefix' => '<div id="first-time">', 
	'#suffix' => '</div>', 	
);

[/codesyntax]
Bien, coméntalo y añade justo debajo:

[codesyntax lang=»php» title=»node.module»]

<?php
drupal_set_title('');
$build['default_message'] = array(
'#markup' => '',
'#prefix' => '',
'#suffix' => '',
);

[/codesyntax]

El bloque de contenido principal ya no aparecerá en la página principal, aunque esto no es perfecto, lo sé… pero funciona xD.

Obtener la altura de una capa con contenido oculto (overflow:hidden)

0

Hay veces que nos encontramos con capas con alturas dinámicas a causa de su contenido, pero que no podemos redimensionarlas debido a que tenemos una altura fija, o hay otros elementos que impiden su visualización completa. Las soluciones que he podido encontrar me resultaban un poco chapuceras, ya que se limitaban a crear una capa fuera del area visible de la pantalla (valores negativos para top y left) con el contenido que iba a tener la capa y obtener su altura, obviamente después se eliminaba, pero no me convencía del todo.

La solución que propongo no es precisamente la mejor, pero es algo más elegante que crear contenido duplicado. Veamoslo:

Creamos la capa :

<div class=»contenido» id=»contenido»></div>

Y le damos formato:

.contenido{ width:400px; height:auto; overflow:hidden; }

Supongamos que la capa ya dispone de tal cantidad de contenido que se desborda y no podemos verlo a causa del atributo ‘overflow’. Con javascript hariamos lo siguiente:

Justo antes de cargar el contenido y al tener el atributo ‘height’ en auto tendremos que ocultar la capa:

var capa_contenido = document.getElementById(‘contenido’)

capa_contenido..style.visibility = ‘hidden’;

De esta manera el usuario no verá la capa, pero tampoco el contenido que se le fuese a añadir a continuación.

Una vez añadido el contenido, procedemos a obtener la altura de la capa, ponerle la altura correcta y volverla visible:

var altura = capa_contenido.offsetHeight;

capa_contenido.style.height = ‘400px’;
capa_contenido.style.visibility = ‘visible’;

Ya podemos trabajar con la altura dinámica de la capa. Esto es muy útil, sobre todo, a la hora de trabajar con ajax o con capas con barra de desplazamiento y no se quiere usar el atributo ‘overflow:scroll’;.

PD: Antes de esto, estuve mirando jQuery pero las propiedades que me ofrecía (position() y offSet) no funcionan con capas o contenido oculto.

Ir arriba