【问题标题】:Adding print friendly link on specific nodes在特定节点上添加打印友好链接
【发布时间】:2016-01-10 20:08:10
【问题描述】:

在我的 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);
  }

【问题讨论】:

    标签: php printing drupal-7


    【解决方案1】:

    好的,所以我认为发布我自己的问题的答案可能是个好主意,以防其他遇到同样问题的人正在查看这篇文章。再次感谢 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();
            }
        }
    }
    

    在我的节点模板中(就在“print render($content);”行之后):

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

    就是这样。现在它完全按照我的意愿工作了:-)

    【讨论】:

      【解决方案2】:

      第一步应该是在结构>内容类型>要打印的节点类型中将节点类型配置为可打印。 然后默认情况下,当您呈现节点内容时会出现一个打印链接。

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

      【讨论】:

      • 感谢您的回答。是的,我已经完成了所有这些。问题是我只想在该特定内容类型的 5 个特定节点中显示链接,总共有大约 20 个节点,而且我不知道如何使用 print_insert_link()... 我一直在努力:-)
      • 然后在你的 them_preprocess_node 函数中测试 $node->nid 是否在 nids 目标列表中。如果是:将 print_insert_link() 的值保存在 $variables['print_custom_link'] 中,如果不为空,则在节点模板中打印 $print_custom_link。
      • 很抱歉打扰您,,, 当我尝试以特定内容类型打开页面时,屏幕变为空白。你能看到我在上面的代码中做错了什么吗(我编辑了我的问题)。
      • 嗯,我猜你不需要渲染 $print_custom_link 因为它已经是 html 了。如果您想获得错误信息,请激活 dblog 模块并在出现空白页面后在报告>最近的日志消息下查看。
      • 非常感谢...在数据库日志记录模块中有一条错误消息指出 $node 是未定义的变量...所以我添加了一个检查以查看是否设置了节点,就像这样: if (isset($node) && count($node->field_adds) != 0){ ... } 我一直在调查 .... :-) 非常感谢,你帮了大忙。跨度>
      猜你喜欢
      • 2015-04-15
      • 2020-01-04
      • 2023-02-25
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      相关资源
      最近更新 更多