Drupal 7 UX: Pagina in admin-theme
Het beheerthema of admin-theme kan in de Drupal code op twee manieren worden ingesteld:
- Met hook_menu() + 'theme callback' + 'theme arguments' voor pagina's waarvan de functie nauw verbonden is met het gekozen thema. Bijvoorbeeld om beheerpagina's in het beheerthema te tonen.
- Met hook_custom_theme() voor algemene thema-wijzigingen. Bijvoorbeeld om alle pagina's per gebruiker in een ander thema te tonen.
hook_menu()
De theme-instelling met behulp van hook_menu() gaat met behulp van een callback en arguments. De callback is een functienaam die wordt aangeroepen met arguments als parameter. Een mechanisme dat in hook_menu() vaker wordt gebruitk. Een voorbeeld uit system_menu():
system_menu() {
...
$items['admin'] = array(
'title' => 'Administer',
'access arguments' => array('access administration pages'),
'page callback' => 'system_main_admin_page',
'weight' => 9,
'menu_name' => 'management',
'theme callback' => 'variable_get',
'theme arguments' => array('admin_theme'),
'file' => 'system.admin.inc',
);
...
return $items;
}
- Instelling van het admin-theme is de typische toepassing van 'theme callback'.
- 'theme callback' wordt georven door onderliggende paden. De bovenstaande definitie voor het drupal-pad 'admin', wordt ook gebruikt voor bijv. admin/configure en admin/configure/people/accounts. Als er voor een pad geen 'theme callback' gedefinieerd is, wordt de definitie van een bovenliggend pad gebruikt.
- De 'theme callback' retourneert de systeemnaam van een actief thema. Een niet actief thema wordt genegeerd.
- Als er geen theme gedefinieerd is wordt het default-theme gebruikt.
- Met hook_menu_alter() kan een ander thema ingesteld worden. Maar hiervoor moet men exact weten voor paden 'theme callback' gedefineerd is. Gebruik anders hook_custom_theme() voor een custom theme.
De onderstaande hulpfunctie wordt door Drupal gebruikt om het thema van het node-edit-form te bepalen.
Drupal 7 UX: Page in admin-theme
In Drupal 7 there are two ways to programmatically set the theme in which a page is displayed:
- Using hook_menu() + 'theme callback' + 'theme arguments'. This is used for pages which are always displayed in the same theme, such a the administration pages.
- Using hook_custom_theme(). This is used to set the theme for individual pages. For example to set a different theme per user.