Drupal视图PHP过滤器显示节点ID而不是值

时间:2017-12-07 22:24:52

标签: drupal drupal-7

我正在尝试打印分类术语(即field_company),但它是该文章的打印节点ID。

这些是我的available variables

Global:PHP

中使用的代码
<?php
$term = $row->field_company;
print($term);
?>

在我看来自动预览,其显示如下。

        

第1条标题

     

PHP: 2345 //这些是节点ID

           

第2条标题

     

PHP: 2346 //这些是节点ID

           

第3条标题

     

PHP: 2347 //这些是节点ID

           

第4条标题

     

PHP: 2348 //这些是节点ID

     

我期待的是: 例如,在我的分类列表(公司)中,我有类似的术语,

company taxonomy terms list
-term1
-term2
-term3
        

第1条标题

     

PHP: term1

           

第2条标题

     

PHP: term2

           

第3条标题

     

PHP: term2

           

第4条标题

     

PHP: term3

           

第5条标题

     

PHP: term1

     

2 个答案:

答案 0 :(得分:0)

如果字段field_company是分类参考字段,则下面应该有效。

$tid = $row->field_company;
$term = taxonomy_term_load($tid);
print($term->name);

但是你说它输出了一个节点ID?这意味着field_company不是分类术语引用字段,也许它是节点引用字段?
如果它正在引用一个节点,那么这可能有效。

$nid = $row->field_company;
$n = node_load($nid);
print($n->title);

或者您可以使用实体api加载术语或节点。

<强>但下,
你真的不应该用Global:PHP字段做这个(实际上你应该永远不要使用Global:PHP) 您想要的输出应该很容易在视图(relationshiips)中获得,而不使用Global:PHP字段,如果需要,可能会更快,更容易更改。

答案 1 :(得分:0)

您还可以使用视图对象来收集结果

只需将您的字段放在全局PHP之上,然后使用foreach获取术语名称:

<?php 
foreach($view->result as $k => $value){
print $value->field_field_company[0]['rendered']['#title'];
}
?>

注意 - 如果不需要您的字段,请使用isset。如果您收到错误。