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:

Commentaires

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 :)

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><img>
  • Vous pouvez publier du code en utilisant les balises <code>...</code> (generic) ou bien <?php ... ?> (PHP colorié).
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plus d'informations sur les options de formatage

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

Toutes les langues

A propos

En savoir plus... Karim Boudjema. Un développeur belge dans les Andes boliviennes.

Voir mon profil sur LinkedInVoir mon profil sur Twitter

>> En savoir plus...

Commentaires récents