Community Documentation

hook_link

5 core.php hook_link($type, $node = NULL, $teaser = FALSE)
6 core.php hook_link($type, $object, $teaser = FALSE)

Define internal Drupal links.

This hook enables modules to add links to many parts of Drupal. Links may be added in nodes or in the navigation block, for example.

The returned array should be a keyed array of link entries. Each link can be in one of two formats.

The first format will use the l() function to render the link:

  • href: Required. The URL of the link.
  • title: Required. The name of the link.
  • attributes: Optional. See l() for usage.
  • html: Optional. See l() for usage.
  • query: Optional. See l() for usage.
  • fragment: Optional. See l() for usage.

The second format can be used for non-links. Leaving out the href index will select this format:

  • title: Required. The text or HTML code to display.
  • attributes: Optional. An associative array of HTML attributes to apply to the span tag.
  • html: Optional. If not set to true, check_plain() will be run on the title before it is displayed.

Parameters

$type: An identifier declaring what kind of link is being requested. Possible values:

  • node: Links to be placed below a node being viewed.
  • comment: Links to be placed below a comment being viewed.

$node: A node object passed in case of node links.

$teaser: In case of node link: a 0/1 flag depending on whether the node is displayed with its teaser or its full form (on a node/nid page)

Return value

An array of the requested links.

Related topics

▾ 13 functions implement hook_link()

blog_link in modules/blog/blog.module
Implementation of hook_link().
book_link in modules/book/book.module
Implementation of hook_link().
comment_link in modules/comment/comment.module
Implementation of hook_link().
drupal_add_link in includes/common.inc
Add a <link> tag to the page's HEAD.
menu_item_link in includes/menu.inc
Returns the rendered link to a menu item.
node_link in modules/node/node.module
Implementation of hook_link().
statistics_link in modules/statistics/statistics.module
Implementation of hook_link().
taxonomy_link in modules/taxonomy/taxonomy.module
Implementation of hook_link().
theme_menu_item_link in includes/menu.inc
Generate the HTML representing a given menu item ID.
theme_more_help_link in includes/theme.inc
Returns code that emits the 'more help'-link.
theme_pager_link in includes/pager.inc
Format a link to a specific query result page.
upload_link in modules/upload/upload.module
Implementation of hook_link().
_statistics_link in modules/statistics/statistics.module
It is possible to adjust the width of columns generated by the statistics module.

File

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

Code

<?php
function hook_link($type, $node = NULL, $teaser = FALSE) {
  $links = array();

  if ($type == 'node' && isset($node->parent)) {
    if (!$teaser) {
      if (book_access('create', $node)) {
        $links['book_add_child'] = array(
          'title' => t('add child page'), 
          'href' => "node/add/book/parent/$node->nid",
        );
      }
      if (user_access('see printer-friendly version')) {
        $links['book_printer'] = array(
          'title' => t('printer-friendly version'), 
          'href' => 'book/export/html/' . $node->nid, 
          'attributes' => array('title' => t('Show a printer-friendly version of this book page and its sub-pages.')),
        );
      }
    }
  }

  $links['sample_link'] = array(
    'title' => t('go somewhere'), 
    'href' => 'node/add', 
    'query' => 'foo=bar', 
    'fragment' => 'anchorname', 
    'attributes' => array('title' => t('go to another page')),
  );

  // Example of a link that's not an anchor
  if ($type == 'video') {
    if (variable_get('video_playcounter', 1) && user_access('view play counter')) {
      $links['play_counter'] = array(
        'title' => format_plural($node->play_counter, '1 play', '@count plays'),
      );
    }
  }

  return $links;
}
?>
Login or register to post comments