Php Drupal 7使用字段\视图\值()获取摘要

Php Drupal 7使用字段\视图\值()获取摘要,php,drupal,drupal-7,teaser,Php,Drupal,Drupal 7,Teaser,我有一个Ajax处理程序脚本,在其中加载$nodeId,并在默认(完整)视图中输出结果: 现在我还需要显示摘要(摘要或修剪) 到目前为止,我尝试了这一点,但没有成功(摘要填写在内容中): 解决问题但不起作用的方法: 3. $output = truncate_utf8(strip_tags($node->body['eng']['0']['summary']),200,true,true); echo $output; (blank) 奇怪的是,var_dump($node->body[

我有一个Ajax处理程序脚本,在其中加载
$nodeId
,并在默认(完整)视图中输出结果:

现在我还需要显示摘要(摘要或修剪)

到目前为止,我尝试了这一点,但没有成功(摘要填写在内容中):

解决问题但不起作用的方法:

3. $output = truncate_utf8(strip_tags($node->body['eng']['0']['summary']),200,true,true);
echo $output; (blank)
奇怪的是,
var_dump($node->body['eng']['0'])
显示和数组,其中包含
value
(body)、
summary
clean\u summary
和其他元素,
summary
填充了必要的值。但正如例2所示,我无法直接访问它,它在屏幕上显示为空白

小费,谢谢


谢谢。

我想这是一个多语言网站,否则你可能会在
$node->body['und'][0]
中找到你想要的内容(即
und
,未定义的语言代码)

您的第一个解决方案应该可以工作,只是您使用了
摘要
而不是
摘要
,我很确定视图模式区分大小写。另外,您还有
$node->body['en'][0]
(语言代码为
en
),而您在所有其他示例中都使用了语言代码
eng
,这可能是问题所在吗

如果
$node->body['eng']['0']['summary']
不是空的,那么您的第二个解决方案就必须工作,因此我会再次检查您的
var\u dump()
是否在调用
$node=node\u load($input)后立即检查
var\u dump()的输出
使之成为公平的测试,例如)

类似地,如果第三个解决方案输出的是空字符串,则表示
$node->body['eng']['0']['summary']
绝对必须为空

我强烈建议安装并使用
dpm()
函数打印对象/数组的格式良好的层次视图,以供检查。如果您不能做到这一点,Drupal7有一个
debug()
函数,它可以执行类似的操作。这两个函数的输出都打印到标准Drupal消息空间


希望有帮助

在不直接访问值的情况下执行此操作的正确方法(因此我认为您会自动获得国际化版本)如下所示:

$node = node_load($nid);
$body = field_get_items('node', $node, 'body');
$teaser = field_view_value('node', $node, 'body', $body[0],'teaser');
要输出$trister值,需要将其传递给render()函数


JC

好的,谢谢你的回答,这对我很有帮助。
首先,我用
eng
en
修复了问题中的打字错误(在代码中,它们很好)。
上面提到的所有解决方案都很好,除了解决方案1,我不得不从
striser
改为
striser
,但我在错误的地方回音。在我更改了转储数据的位置后,它开始工作。Gr8答案+1.为了简单明了的回答。
3. $output = truncate_utf8(strip_tags($node->body['eng']['0']['summary']),200,true,true);
echo $output; (blank)
$node = node_load($nid);
$body = field_get_items('node', $node, 'body');
$teaser = field_view_value('node', $node, 'body', $body[0],'teaser');
print render($teaser);