Preprocess
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 …
- /da/da/da/da/da/da/da
- Der er tilsyneladende mange mennsker herinde men næsten ingen aktivitet.. Hvorfor?
- Hjælp! Min side er crashet....!
- Dynamisk tilføjelse af node fields, ved node/add, på baggrund af relaterede Term fields?
- Kontrakt styring
- Opsæting af moduler.
- Opsætning af forum
- ændring af mappe-navn??
- Installations problemer
- Et "underligt" problem... :\
-
Der er tilsyneladende mange mennsker herinde men næsten ingen aktivitet.. Hvorfor?Arhhh
-
/da/da/da/da/da/da/daDet skyldes en bug i
-
Der er tilsyneladende mange mennsker herinde men næsten ingen aktivitet.. Hvorfor?...
-
Dynamisk tilføjelse af node fields, ved node/add, på baggrund af relaterede Term fields?...
-
Hjælp! Min side er crashet....!...
-
Hjælp! Min side er crashet....!Prøv at upload filerne igen.
-
Hjælp! Min side er crashet....!...
-
Kontrakt styring..
-
Hjælp! Min side er crashet....!..
-
Hjælp! Min side er crashet....!..
more
