hook_element_info_alter
修改元素的默认值
function hook_element_info_alter(array &$info) {
// 判断元素textfield是否有size属性,有的话设置大小为40
if (isset($info['textfield']['#size'])) {
$info['textfield']['#size'] = 40;
}
}
function hook_element_info_alter(array &$info) {
// 判断元素是否是submit,为真添加自定义class
if (isset($info['submit'])) {
$info['submit']['#attributes']['class'] = 'btn btn-success';
}
}
hook_form_system_theme_settings_alter
更改主题特定的设置表单
添加表单元素,更改默认值,删除表单元素
function hook_form_system_theme_settings_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state) {
// Add a checkbox to toggle the breadcrumb trail.
$form['toggle_breadcrumb'] = [
'#type' => 'checkbox',
'#title' => t('Display the breadcrumb'),
'#default_value' => theme_get_setting('features.breadcrumb'),
'#description' => t('Show a trail of links from the homepage to the current page.'),
];
}
hook_theme_suggestions_HOOK
提供备用主题命名建议
function hook_theme_suggestions_HOOK(array $variables) {
$suggestions = [];
$suggestions[] = 'hookname__' . $variables['elements']['#langcode'];
return $suggestions;
}
hook_theme_suggestions_HOOK_alter
主题钩子命名的建议
它会重新排序或删除由hook_theme_suggestions_HOOK提供的建议或先调用此钩子
function hook_theme_suggestions_HOOK_alter(array &$suggestions, array $variables) {
if (empty($variables['header'])) {
$suggestions[] = 'hookname__' . 'no_header';
}
}
hook_theme_suggestions_alter
更改所有主题钩子命名建议
function MYMODULE_theme_suggestions_alter(array &$suggestions, array $variables, $hook) {
// 根据登录的用户为节点和分类术语模板提供了替代模板建议
if (\Drupal::currentUser()->isAuthenticated() && in_array($hook, array('node', 'taxonomy_term'))) {
$suggestions[] = $hook . '__' . 'logged_in';
}
}
function hook_theme_suggestions_alter(array &$suggestions, array $variables, $hook) {
// Add an interface-language specific suggestion to all theme hooks.
$suggestions[] = $hook . '__' . \Drupal::languageManager()->getCurrentLanguage()->getId();
}
hook_css_alter
更改css文件
function hook_css_alter(&$css, \Drupal\Core\Asset\AttachedAssetsInterface $assets) {
// Remove defaults.css file.
unset($css[drupal_get_path('module', 'system') . '/defaults.css']);
}
hook_page_attachments
将资源库添加到页面中
function hook_page_attachments(array &$attachments) {
// Unconditionally attach an asset to the page.
$attachments['#attached']['library'][] = 'core/domready';// Conditionally attach an asset to the page.
if (!\Drupal::currentUser()->hasPermission('may pet kittens')) {
$attachments['#attached']['library'][] = 'core/jquery';
}
}
hook_page_attachments_alter
删除或者更改页面的资源库,或者将附件添加到依赖于另一个模块附件的页面上
此钩子在hook_page_attachments()之后运行
function hook_page_attachments_alter(array &$attachments) {
// Conditionally remove an asset.
if (in_array('core/jquery', $attachments['#attached']['library'])) {
$index = array_search('core/jquery', $attachments['#attached']['library']);
unset($attachments['#attached']['library'][$index]);
}
}