Crear templates para nuestras páginas basadas en un tipo de nodo

A veces necesitamos de una template page.tpl.php para cada tipo de nodo (page-[type].tpl.php). Por ejemplo una template distinta para nuestros nodos de tipo ‘Blog’ (page-blog.tpl.php) y una otra para nuestros nodos de tipo ‘mitipo’ (page-mitipo.tpl.php).

Si Drupal nos propone por defecto (Template Suggestion) templates como node-[type].tpl.php, no es lo mismo para los templates de nuestras páginas.

Para añadir (o sugerir) templates para nuestras páginas, solo debemos instertar el código siguiente en nuestro archivo template.php de nuestro tema.

No se olviden cambiar temaNombre por el nombre de su tema.

Drupal 6

<?php
function temaNombre_preprocess_page(&$vars, $hook) {
  if (isset(
$vars['node'])) {
  
// Si el tipo de nodo es "blog" la template propuesta será "page-blog.tpl.php".
  
$vars['template_files'][] = 'page-'. str_replace('_', '-', $vars['node']->type);
  }
}
?>

Para más información:

Working with template suggestions - http://drupal.org/node/223440
Page templates depending on node type - http://drupal.org/node/249726

Si tiene un comentario y/o una pregunta, no dude en enviarla.

Tags:

Comentarios

Como se llama el nodo que carga la pagina de user-login

Quisiera hacer una página con template distinto para el login de acceso. Es un nodo distinto? o se carga de otra manera

Funcción pre process

Lo mejor para el theme del formulario de login es trabajar por funciones pre process para crear el archivo user-login.tpl.php desde el archivo template.php:

<?php

function mytheme_theme(&$existing, $type, $theme, $path) {
 
$hooks['user_login'] = array(
   
'template' => 'templates/user_login',
   
'arguments' => array('form' => NULL),
   
// other theme registration code...
 
);
  return
$hooks;
}

function

mytheme_preprocess_user_login(&$variables) {
 
$variables['intro_text'] = t('This is my awesome login form');
 
$variables['rendered'] = drupal_render($variables['form']);
}
?>

Encontrarás más informaciones en http://drupal.org/node/19855

Gracias me ha sido de gran

Gracias me ha sido de gran ayuda

Temas diferentes para tipos de contenido diferente

Estoy dándole vueltas a lo de hacer un tpl distinto para un determinado node y no hay forma de que funcione.
He creado node-numerodenodo.tpl.php, page-tipo_contenido.tpl.php y no funciona. También he modificado la funcion preprocess del template.php y no consigo que funcione.
Etoy con Drupal 7.
Si me pudieras ayudar te lo agradecería.
Un saludo

En Drupal 7

Imacia,

No te olvides que este artículo está para Drupal 6.x

En Drupal 7 deberías hacer lo siguiente:

node--[type|nodeid].tpl.php (dos -- en vez de uno)

Aquí tienes más información: http://drupal.org/node/1089656

Temas de Drupal

Hola, puedo hacerte una pregunta? Tienes idea dónde conseguir temas para drupal? Porque los que conseguido son muy feos.
Un saludo,
Juan

Yo empezaría por aquí:

Yo empezaría por aquí: http://drupal.org/project/themes

Ahora si quieres invertir un poco tienes temas de pago como en http://www.templatemonster.com/pack/drupal-7-themes/

Pero te recomiendo que hagas tus temas tú mismo, así tienes un mejor control sobre ellos :)

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><img>
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

By submitting this form, you accept the Mollom privacy policy.

Arcerca del autor

Karim BoudjemaKarim Boudjema. Un belga apasionado de las TIC's en los Andes de Bolivia.

Ver mi perfil en LinkedInVer mi perfil en Twitter

>> Más...

Comentarios recientes