Formación Drupal Barcelona: Cambiar home en función del dominio

29-05-2015
 
Drupal Inbound A lter Hook

Drupal Inbound A lter Hook

A partir de la versión 7, Drupal nos provee de un hook llamado ‘url_inbound_alter’ muy interesante que nos permite interceptar la URL y modificar el path. De esta manera, por ejemplo, si tenemos un portal que tiene varios subdominios y queremos que se muestre una home diferente en función del dominio podemos hacerlo de la forma siguiente(Con código comentado):

/* Devuelve un array con la estructura de dominios y idiomas */
function getNodesByHosts() {
	return array( 
		"midominio1.com"=>array( "es"=>"node/99","ca"=>"node/98","en"=>"node/100" ),

		"subdominio.midominio1.com"=>array( "es"=>"node/10","ca"=>"node/4","en"=>"node/5" ),
		"midominio2"=>array( "es"=>"node/99","ca"=>"node/98","en"=>"node/100" ),
		);
	}

function idmimodulo_url_inbound_alter(&$path, $original_path, $path_language) {
	global $base_root,$language;

	/* si no es home no hago nada */
	if (!drupal_is_front_page()) return;

	$b=str_replace("http://","",$base_root);
	$b=str_replace("www.","",$b);

	$h=getNodesByHosts();
	if ( isSet( $h[ $b ] ) ) if ( isSet( $h[ $b ][ $language->language ] ) ) {
	        $path = $h[ $b ][ $language->language ];
		}
	}

En el ejemplo, no solo cambio la página en función del dominio sino también en función del idioma.

Ya veis que fácil es reescribir URLs en Drupal programaticamente(Me mola la palabra, programaticamente 😀 ). Espero que os sea útil, buen fin de semana!

Leave a Reply

© Albert Coronado Calzada