Drupal - 如何更改默认视图/编辑操作内容类型的名称

时间:2012-04-25 12:04:58

标签: php drupal drupal-6 drupal-7 drupal-modules

我正在使用drupal 7.首先请参考我的屏幕截图来获取我正在谈论的内容。 http://www.karya.gisla.in/scr.png

让我们说我的内容类型是文章。当我们创建文章时,对于经过身份验证的用户,该节点会显示主要选项卡,即:查看和编辑。我只想更改/编辑它来说:查看文章和编辑文章。

注意:仅适用于特定内容类型。即其他内容类型,表示页面将显示为默认值:查看和编辑。

任何想法如何实现这一点。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

以下代码可以解决问题。将其粘贴到主题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');
      }
    }
  }
}

玩得开心,马丁

答案 1 :(得分:0)

String Overrides Module可能有所帮助,但我不确定它是否处理角色。

答案 2 :(得分:0)

您可以将以下功能放入主题的模板文件中,并将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;
                        }
                    }
                }
            }
        }
    }
}

答案 3 :(得分:0)

有一个模块: https://drupal.org/project/tabname_tweaker ; - )