你在这里

添加新的上下文链接

原文链接:http://drupal.org/node/1089922

正在翻译中···

此页面包含了一个粗略的指导,在自己的自定义模块添加新的上下文链接。

语境链接基本上都添加了两个步骤:

  1. 声明hook_menuhook_menu_alter使用的菜单项
  2. 上下文链接渲染元素渲染阵列。

声明上下文链接菜单项

在菜单系统中的本地任务执行上下文链接此外,参数范围内设置到MENU_CONTEXT_INLINE

上下文链接的菜单项可能看起来像这样:

<?php
  // An example contextual link menu item.
  $items['contextual/%/information'] = array(
    'title' => 'Block information',
    'type' => MENU_LOCAL_ACTION,
    'context' => MENU_CONTEXT_INLINE,
    'page callback' => 'contextual_example_page',
    'page arguments' => array(1),
    'access callback' => TRUE,
  );
  // To use local task menu items, there must be a parent page.
  $items['contextual'] = array(
    'title' => 'The contextual example page',
    'page callback' => 'contextual_example_page',
    'page arguments' => array(1),
    'access callback' => TRUE,
  );
?>

添加上下文链接渲染元素

上下文链接渲染元素被添加使用任何功能,可以改变一个渲染阵列。一个例子如下:

<?php
/**
* Implements hook_block_view_alter().
*/
function contextual_example_block_view_alter(&$data, $block) {
  // Contextual links can be added as a renderable element to the content of
  // a render array. We check if the block has content, and if so add a
  // contextual link to it.
  if (isset($data['content']) && is_array($data['content'])) {
    $contextual_links = array(
      'contextual',
      array($block->module),
    );

    $data['content']['#contextual_links']['contextual_example'] = $contextual_links;
  }

}
?>

上下文链接渲染元素数组键控模块提供上下文链接。这个数组有两个值,第一个是本地任务菜单项,包含该菜单项的任何回调参数(放置在另一个数组)第二检查路径。

请注意,该元素将改变由contextual_preprocess功能,在这部分的渲染阵列移动到任何标题后缀元素。如果没有标题后缀元素,上下文链接将不会被显示出来(除非你改变预处理)。