Theming
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
- log ind eller opret profil for at skrive kommentarer
- Det er gratis
- Du kan skrive artikler og tips
- Du kan få hjælp eller hjælpe andre
- - og meget mere …

1 dag 10 timer siden
1 dag 11 timer siden
4 dage 19 timer siden
5 dage 8 timer siden
3 uger 14 timer siden
3 uger 4 dage siden
4 uger 16 timer siden
4 uger 17 timer siden
4 uger 2 dage siden
4 uger 3 dage siden