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