【问题标题】:Drupal views PHP filter is showing node id instead of valueDrupal 视图 PHP 过滤器显示节点 ID 而不是值
【发布时间】:2017-12-07 22:24:51
【问题描述】:

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

这些是我的available variables

全球使用的代码:PHP

<?php
$term = $row->field_company;
print($term);
?>

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


第 1 条标题

PHP: 2345 //这些是节点ID


第2条标题

PHP: 2346 //这些是节点ID


第三条标题

PHP: 2347 //这些是节点ID


第四条标题

PHP: 2348 //这些是节点ID


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

company taxonomy terms list
-term1
-term2
-term3

第 1 条标题

PHP: term1


第2条标题

PHP: term2


第三条标题

PHP: term2


第四条标题

PHP: term3


第五条标题

PHP: term1


【问题讨论】:

    标签: drupal drupal-7


    【解决方案1】:

    如果字段 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 字段,并且如果需要,以后可能会更快、更容易地更改。

    【讨论】:

    • 我有一种情况,每个用户在他的帐户中都有一个公司名称字段,该字段从 drupal 中的 SESSION 加载。我希望这些公司名称自动填充到分类词汇列表中。 (如果公司是词汇表,则 SESSION 中的所有公司名称都应作为该词汇表下的术语填充)。它不应该重复是 2 个或更多用户拥有同一家公司。我真的不知道这是否可能。
    【解决方案2】:

    你也可以使用视图对象来收集你的结果,

    只需将您的字段置于全局 PHP 之上并使用 foreach 获取术语名称:

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

    注意 - 如果您的字段不是必需的,请使用 isset。否则会出错。

    【讨论】:

    • Views Php 过滤器代码:if((($_SESSION['webauth']['company']) == "xyz company")&amp;&amp;($data-&gt;field_field_company_name[0]['rendered']['#markup'] == "xyz taxonomy")) return TRUE; 我正在尝试消除为 TRUE 的那一行。这样剩余的就会打印出来。但这在过滤器代码中不起作用。相反,如果我在 FIELDS 中提供它,(全局 PHP)&lt;?php if((($_SESSION['webauth']['company']) == "xyz company")&amp;&amp;($data-&gt;field_field_company_name[0]['rendered']['#markup'] == "xyz taxonomy")) echo "hi"; ?&gt; 它在那里工作。
    • 您可以直接使用 print 功能来显示您的字段,否则您将保留为空白,以便自动消除。
    • 据我所知,在 Views PHP 过滤器中,我们无法打印。如果条件返回 TRUE,则从显示中删除特定行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多