我正在使用drupal 7。首先请参考我的屏幕截图以了解我在说什么。 http://www.karya.gisla.in/scr.png
假设我的内容类型是文章。当我们创建文章时,对于经过身份验证的用户,节点显示主要选项卡,即:查看和编辑。我只想更改/编辑它说:查看文章和编辑文章。
注意:仅适用于特定的内容类型。即其他内容类型说页面将默认显示:查看和编辑。
任何想法如何实现这一目标。
任何帮助将不胜感激。
我正在使用drupal 7。首先请参考我的屏幕截图以了解我在说什么。 http://www.karya.gisla.in/scr.png
假设我的内容类型是文章。当我们创建文章时,对于经过身份验证的用户,节点显示主要选项卡,即:查看和编辑。我只想更改/编辑它说:查看文章和编辑文章。
注意:仅适用于特定的内容类型。即其他内容类型说页面将默认显示:查看和编辑。
任何想法如何实现这一目标。
任何帮助将不胜感激。
以下代码可以解决问题。将其粘贴到您的主题 template.php 中并将 YOURTHEMENAME 更改为...您的主题名称。也许在这个函数中使用 dpm($vars) 来查看 $vars 中的信息种类。这应该可以帮助您下次更快地达到目的。
[编辑:] 感谢 Ben 指出这一点!这是一个更新的版本:
function YOURTHEMENAME_preprocess_page(&$vars) {
if ($vars['node']->type == 'article') {
foreach($vars['tabs']['#primary'] AS $index => $tab) {
if($tab['#link']['title'] == t('View')) {
$vars['tabs']['#primary'][$index]['#link']['title'] = t('View Article');
}
if($tab['#link']['title'] == t('Edit')) {
$vars['tabs']['#primary'][$index]['#link']['title'] = t('Edit Article');
}
}
}
}
玩得开心,马丁
字符串覆盖模块可能会有所帮助,但我不确定它是否处理角色。
您可以将以下功能放入主题的模板文件中并替换YOURTHEME
为主题名称以更改选项卡链接。
$nodes
是一个多维数组,其中第一级键是您希望替换选项卡的内容类型,第二级键值组合分别是路径和替换模式。设置替换模式''
将删除选项卡。
/**
* Implements hook_menu_local_tasks_alter().
*/
function YOURTHEME_menu_local_tasks_alter(&$data, $router_item, $root_path) {
$nodes = array(
'article' => array(
'node/%/view' => 'View Article',
'node/%/edit' => 'Edit Article'
)
);
foreach ($router_item['page_arguments'] as $key => $argument) {
if (is_object($argument) && array_key_exists( $router_item['page_arguments'][$key]->type, $nodes )) {
foreach( $nodes[$router_item['page_arguments'][$key]->type] as $path => $new_title ) {
foreach ($data['tabs'][0]['output'] as $key => $value) {
if ($value['#link']['path'] == $path) {
if( !$new_title ) {
unset($data['tabs'][0]['output'][$key]);
} else {
$data['tabs'][0]['output'][$key]['#link']['title'] = $new_title;
}
}
}
}
}
}
}
有一个模块: https : //drupal.org/project/tabname_tweaker ;-)