8.5.x menu.api.php hook_link_alter(&$variables)
8.0.x menu.api.php hook_link_alter(&$variables)
8.1.x menu.api.php hook_link_alter(&$variables)
8.2.x menu.api.php hook_link_alter(&$variables)
8.3.x menu.api.php hook_link_alter(&$variables)
8.4.x menu.api.php hook_link_alter(&$variables)
8.6.x menu.api.php hook_link_alter(&$variables)
5.x core.php hook_link_alter(&$node, &$links)
6.x core.php hook_link_alter(&$links, $node, $comment = NULL)

Perform alterations before links on a node or comment are rendered.

One popular use of this hook is to modify/remove links from other modules. If you want to add a link to the links section of a node or comment, use hook_link() instead.


$links: Nested array of links for the node or comment keyed by providing module.

$node: A node object.

$comment: An optional comment object if the links are comment links. If not provided, the links are node links.

See also


Related topics

1 function implements hook_link_alter()

Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.

translation_translation_link_alter in modules/translation/translation.module
Implementation of hook_translation_link_alter().
5 invocations of hook_link_alter()
comment_render in modules/comment/comment.module
Renders comment(s).
node_view in modules/node/node.module
Generate a display of the given node.
taxonomy_link in modules/taxonomy/taxonomy.module
Implementation of hook_link().
theme_comment_flat_expanded in modules/comment/comment.module
Theme comment flat expanded view.
theme_comment_thread_expanded in modules/comment/comment.module
Theme comment thread expanded view.


developer/hooks/core.php, line 1048
These are the hooks that are invoked by the Drupal core.


function hook_link_alter(&$links, $node, $comment = NULL) {
  foreach ($links as $module => $link) {
    if (strstr($module, 'taxonomy_term')) {

      // Link back to the forum and not the taxonomy term page
      $links[$module]['href'] = str_replace('taxonomy/term', 'forum', $link['href']);


matt2000’s picture

In Drupal 7, links can be modified in hook_node_view_alter().

liquidcms’s picture

i don't agree that hook_node_view_alter() is a valid replacement for this in D7 as it only runs when displaying a node; which doesn't include many pages. So far i haven't found a decent hook to do this in D7.

xandeadx’s picture


Alan D.’s picture

This can be done at the theme layer too. Use THEMENAME_links() for all links, or the theme suggestions to target specific links.

 * Intercepts the node links to alter the user blog links.
 * @param unknown $variables
 * @return string
function THEMENAME_links__node($variables) {
  $links = &$variables['links'];
  if (isset($links['blog_usernames_blog'])) {
    $links['blog_usernames_blog'] = array(
      'title' => t('Blogs'),
      'href' => 'blog',
      'attributes' => array('Read the latest blog entries.'),
  return theme_links($variables);
boran’s picture

function mymodule_link_alter(&$links, $node, $comment = NULL) {
// move stats to the end

meustrus’s picture

Prior to Drupal 6.16, hook_link_alter was never used for comments except with single view (such as when replying to a specific comment). The optional $comment variable was added in Drupal 6.17. These changes were made based on #374463: Alter comment links.