在特定节点上添加打印友好链接

时间:2016-01-10 20:08:11

标签: php printing drupal-7

在我的Drupal 7网站中,我使用打印机,电子邮件和PDF版本模块。我想在特定内容类型的某些特定页面上显示打印机链接。所以我在该内容类型中启用了链接,其中包含一个布尔字段(field_printable),管理员应该可以选择是否包含该链接。 在我的template.php文件中,我试图弄清楚如何解决这个问题。这是我到目前为止在template.php文件中的内容:

function mytheme_preprocess_node(&$variables) {
    if($variables['type'] == "mycontenttype"){
        // boolean field that returns 1 if checked
        if($node->field_printable['und'][0]['value'] == 1){
                 what to put here ...?
        }
    }
}

我应该使用print_insert_link();插入链接,但我无法弄清楚如何。谁能指出我正确的方向?我花了几个小时在谷歌搜索类似的问题,但我现在卡住了。

任何帮助都将非常感谢,提前感谢。

编辑:尝试此操作后屏幕变为空白...

function mytheme_preprocess_node(&$variables) {
    if($node->nid == 408){
        $variables['print_custom_link'] = print_insert_link();
    }
}

我还在节点模板文件中添加了这个:

  print render($content);
  if(!empty($print_custom_link)){
      print render($print_custom_link);
  }

2 个答案:

答案 0 :(得分:2)

好的,所以我认为发一个自己问题的答案可能是一个好主意,以防其他人在遇到同样的问题时正在考虑这篇文章。再次感谢Laurent!

原来我的布尔字段' field_printable"可直接在$ variables中使用。并且$ node根本不可用。

所以在我的template.php中,我最终得到了这个:

function mytheme_preprocess_node(&$variables) {
    if($variables['type'] == "mycontentpage"){
        if($variables['field_printable']['und'][0]['value'] == 1){
                $variables['print_custom_link'] = print_insert_link();
        }
    }
}

在我的节点模板中(在行&#34之后;打印渲染($ content);"):

if(!empty($print_custom_link)){
    print $print_custom_link;
}

那就是它。现在它完全符合我的要求: - )

答案 1 :(得分:1)

第一步应该是将节点类型配置为可在结构中打印>内容类型>您要打印的节点类型。 然后默认情况下,渲染节点内容时将显示打印链接。

如果要在特定区域和/或特定节点(甚至视图)中显示打印链接,则可以决定使用print_insert_link()显示打印链接:https://www.drupal.org/node/306888