Drupal 6:显示节点翻译的标志

时间:2012-04-15 19:16:08

标签: drupal internationalization drupal-6 drupal-modules

对于每个节点预览,我希望顶部有一些小的标志图标代表可用的翻译。我见过语言切换器代码,但它一直输出所有语言。这很烦人,因为人们会点击他们的语言,然后发现页面只有英文版本(我有一个网站上有很多种语言的文章)。我已经看到了这一点。我对Drupal编程比较陌生。谁能给我一个指针?

谢谢!

1 个答案:

答案 0 :(得分:0)

我自己想出来,并在这里注意到它因为我知道我不是唯一有这个问题的人。

我正在处理的模板叫做scaccarium,所以我去了 /themes/scaccarium/template.php 并添加了以下功能:

function scaccarium_preprocess_node(&$vars) {
  $node = $vars['node'];
  $translationlinks = array();
  // Move translation links into separate variable
  foreach ($node->links as $key => $value) {
    if ($value['attributes']['class'] == 'translation-link') {
      $translationlinks[$key] = $value;
      // unset($vars['node']->links[$key]);
    }
  }
  $vars['translationlinks'] = theme('links', $translationlinks, array('class' => 'links translationlinks inline'));
}

如果您的模板被调用了其他内容,您显然应该转到另一个文件夹并更改函数名称的第一个单词。如果您的主题带有现有的_preprocess_node函数,请仔细修改它。

然后,我去了模板的 node.tpl.php 并添加了

<?php if ($translationlinks) {
            print $translationlinks;
      } ?> 
标题旁边的

然后我必须在Performance&gt;中清除Drupal缓存(即使缓存已被禁用!)缓存以使其生效。

完成!

... 要在完整节点的顶部添加语言链接,我还必须在node.tpl.php的不同位置添加另一个“print $ translationlinks”,因为h3标题仅用于节点预览。然后,为了删除完整节点底部的冗余语言链接,我尝试了你在template.php中注释掉的未设置行 - 我发现即使其他网站推荐它也没有效果。所以我最终做的就是使用CSS,将以下内容添加到模板的CSS文件中:

.node-links .translation-link {
  display: none;
}

我希望我的经验可以帮助其他人解决同样的问题。