如何使用Views PHP重写字段结果?


7

我正在使用Views PHP重写Views中的字段。我可以访问所有具有构建模式的变量,但可以访问所有变量。就我而言,我有Content:Node字段(可以根据任何显示来构建),应该使用变量可以访问它$row->nodefield。但是,该变量的内容始终为空。我尝试了其他变量,并且不会在Views PHP中呈现具有构建模式的每个字段。

在此处输入图片说明

这是设计问题还是我缺少什么?

我正在使用Drupal 7和Views 3

编辑

在可用值上使用dpm()返回以下内容:

dpm($行)

在此处输入图片说明

dpm($数据)

在此处输入图片说明

Answers:


6

在“输出代码”部分上方,应检查$data“值”字段中的变量。

通常我只是dpm($data)找到我需要的领域。然后,您可以将其保存到$static['myvalue']变量中,以在“输出代码”字段中使用。

这很令人困惑,但是由于某些原因,如果您只尝试$row->xxx“输出代码”部分中的变量,则这些变量为空或设置为node-id。


谢谢。我对此dpm($data)
并不陌生

好。DPM是devel函数,因此,如果未安装devel模块,它将无法工作。请安装该文件,或仅使用print_r($ data)。
机会G

我没有找到任何相关内容。(请参阅我的编辑)在$ row对象中,所有字段似乎都为空。我尝试了其他变量,例如$ view或$ handler,但均未成功。不过,令牌[nodefield]在“重写结果”中可用,因此应该在某处。还有其他想法吗?
znat 2012年

3

$row视图中的“可用变量” 项对于获取字段值毫无用处。但是您不需要使用它noad_load来获取所需的数据。首先,像往常一样,隐藏要重写的字段的输出,然后在PHP字段的Output Code字段中使用$data如下代码:

<?php echo check_markup($data->field_field_body[0]['rendered']['#markup'], 'nitf_body'); ?>

在这种情况下,我要剥离不允许的标签并从内容中分配属性以用于NITF导出。如果您不确定里面有什么$data,当然print_r($data)可以看看。


您究竟是什么意思:“首先,像往常一样,隐藏要重写的字段的输出”?您是否要在我们要重写的字段上选中“从显示中排除”复选框?
安东尼奥

是。每当您想要获取字段的值并在后续的自定义字段中使用它时,就可以使用“从显示中排除”。
Scott Lahteine 2014年

1
您可以$data->field_field_body[0]['raw']['value']用来获取原始值。
user2534880 2015年


1

您是否要在视图内部执行此操作?为什么不只是将视图模板本身作为主题,而不是使用PHP全局呢?我不确定print_r是否可以在视图字段中使用。如果是我,我只需单击主题->信息,您将看到views-view-field--MyViewName.tpl.php之类的内容

(编辑,说明)在views模块主题文件夹下,复制“ views-view-field.tpl.php”,然后将其重命名为“ views-view-field--MyViewName.tpl.php”,并将其放在/ templates文件夹下在您的网站上。在文件中,您会看到类似

<?php print $output; ?> 

您可以删除它并手动添加所有字段,例如

<div class="MyPrettyTitle"><?php print $row->_field_data['nid']['entity']->title; ?></div> 
<div class="MyNodeBody">
<?php print $row->_field_data['nid']['entity']->body['und'][0]['value'];?>
</div>

等等。或者将$ output包装为所需的任何内容。

另外,我从来没有对DEVEL感到好运,我总是使用:

<?php print var_dump($row);?> 

然后查看页面的源以获取变量。也许我只是在错误地使用DEVEL,但是我发现使用常规的旧PHP var_dump可以更轻松地获取每一行的变量。


这给出了重复的行!
user219492

0

我花了两天时间找到解决方案。最简单的方法是将“ Views Php Module”更新为7.x-2.x-dev。维护者在其2.x版本中解决了此问题。

您可以从此处下载(请确保下载7.x-2.x-dev):https : //www.drupal.org/project/views_php

希望可以帮助某人。


0

您永远不要将PHP代码存储在数据库中(使用View PHP则可以)。改用Views挂钩修改结果。


嗨,@ ssibal,感谢您的贡献。您能解释为什么应该避免这种情况吗?这将大大提高您的帖子的质量。
Neograph734 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.