Du er ikke logget ind: Log ind eller opret profil
 
tpl

tpl

Udvid dine muligheder med template filer

Problemstilling: 

Du står lige og mangler nogle mere specifikke .tpl filer til din theming

Løsning: 

Ved at gøre brug at et par preprocess funktioner i dit themes templat.php kan du udvide udvalget af tpl filer som Drupal leder efter.
Start med at åbne din template.php og kopier følgende kode ind i filen:
function phptemplate_preprocess_page(&$vars){
//the path module is required and must be activated
if(module_exists('path')){
//gets the "clean" URL of the current page
$alias = drupal_get_path_alias($_GET['q']);
$suggestions = array();
$template_filename = 'page';
foreach(explode('/', $alias) as $path_part)
{
$template_filename = $template_filename.'-'.$path_part;
$suggestions[] = $template_filename;
}
$vars['template_files'] = $suggestions;
}
}

function phptemplate_preprocess_node(&$vars){
//default template suggestions for all nodes
$vars['template_files'] = array();
$vars['template_files'][] = 'node';
//individual node being displayed
if($vars['page']){
$vars['template_files'][] = 'node-page';
$vars['template_files'][] = 'node-'.$vars['node']->type.'-page';
$vars['template_files'][] = 'node-'.$vars['node']->nid.'-page';
}
//multiple nodes being displayed on one page in either teaser
//or full view
else{
//template suggestions for nodes in general
$vars['template_files'][] = 'node-'.$vars['node']->type;
$vars['template_files'][] = 'node-'.$vars['node']->nid;
//template suggestions for nodes in teaser view
//more granular control
if($vars['teaser']){
$vars['template_files'][] = 'node-'.$vars['node']->type.'-teaser';
$vars['template_files'][] = 'node-'.$vars['node']->nid.'-teaser';
}
}
}

function phptemplate_preprocess_block(&$vars){
//the "cleaned-up" block title to be used for suggestion file name
$subject = str_replace(" ", "-", strtolower($vars['block']->subject));
$vars['template_files'] = array('block', 'block-'.$vars['block']->delta, 'block-'.$subject);
}
Hvis du leger i et subtheme er chancen at phptemplate_preprocess allerede er i brug, så omdøber du den blot til mit-theme-navn_preprocess_foobar
Det er vigtigt at du husker at tømme din cache ellers fanger Drupal ikke de nye skabeloner eller theming funktioner.
 

  • Du finder clear knappe i bunden under "Administer -> Site configuration -> Performance"
  • Du kan kalde drupal_rebuild_theme_registry(). (Tip: placer dette i toppen af din template.php fil mens du udvikler, det er vigtigt du fjerne det igen når sitet går live)

 
Ved at indsætte følgende i bunden af de enkelte preprocess funktioner kan du få vist hvilke tpl filer drupal leder efter:
echo '<pre>';
print_r($vars['template_files']);
echo '</pre>';

 
Håber ovenstående kan bruges til noget

Afprøvet i version: 
6.x

  • Det er gratis
  • Du kan skrive artikler og tips
  • Du kan få hjælp eller hjælpe andre 
  • - og meget mere …