访问admin/content页面,在最上面,有一个“Add content”链接,我们也想添加一个这样的链接,方法有很多,第一个方法,就是把链接放到breadcrumb2_overview_breadcrumbs函数里面,通过这个函数,加进来。第二种方法,就是通过node里面提供的方法添加。打开node.module文件,它里面有这样的钩子实现:
/**
* Implements hook_menu_local_tasks_alter().
*/
function node_menu_local_tasks_alter(&$data, $router_item, $root_path) {
// Add action link to 'node/add' on 'admin/content' page.
if ($root_path == 'admin/content') {
$item = menu_get_item('node/add');
if ($item['access']) {
$data['actions']['output'][] = array(
'#theme' => 'menu_local_action',
'#link' => $item,
);
}
}
}
这就是节点模块里面的实现方法,通过hook_menu_local_tasks_alter这个钩子实现。我开始也不知道这个钩子的含义,是我想到的了这个功能,然后在node.module文件里面逐个函数的查找、浏览,最终才发现的。
我们把它改造一下,改造成我们想要的,向breadcrumb2.module文件中,添加以下代码:
/**
* Implements hook_menu_local_tasks_alter().
*/
function breadcrumb2_menu_local_tasks_alter(&$data, $router_item, $root_path) {
// Add action link to 'breadcrumb/add' on 'admin/structure/breadcrumbs' page.
if ($root_path == 'admin/structure/breadcrumbs') {
$item = menu_get_item('breadcrumb/add');
if ($item['access']) {
$data['actions']['output'][] = array(
'#theme' => 'menu_local_action',
'#link' => $item,
);
}
}
}
清除缓存,就可以看到“Add breadcrumb”链接了: