function hook_html_head_alter

Alter XHTML HEAD tags before they are rendered by drupal_get_html_head().

Elements available to be altered are only those added using drupal_add_html_head_link() or drupal_add_html_head(). CSS and JS files are handled using drupal_add_css() and drupal_add_js(), so the head links for those files will not appear in the $head_elements array.


$head_elements: An array of renderable elements. Generally the values of the #attributes array will be the most likely target for changes.

Related topics

1 invocation of hook_html_head_alter()
drupal_get_html_head in includes/
Retrieves output to be displayed in the HEAD tag of the HTML page.


modules/system/system.api.php, line 3919


function hook_html_head_alter(&$head_elements) {
    foreach ($head_elements as $key => $element) {
        if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'canonical') {
            // I want a custom canonical URL.
            $head_elements[$key]['#attributes']['href'] = mymodule_canonical_url();

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.