繁体   English   中英

Drupal 7使用field_view_value()获取预告片

[英]Drupal 7 get teaser with field_view_value()

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

$node = node_load($input);
$prerendered_node = node_view( $node, 'default' );
...

现在我需要显示预告片(摘要或修剪)。

到目前为止我试过这个,没有成功(摘要内容已填写):

1.
$item = $node->body['en'][0];
$output = field_view_value('node', $node, 'body', $item, 'Teaser');
echo $output; (blank)

2. echo $node->body['eng']['0']['summary']; (blank)

这个问题的解决方案但不起作用:

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), summaryclean_summary和其他元素的clean_summary ,并且summary具有必要的值。 但是在示例2中我无法直接访问它,它显示为空白。

提示,好吗?

谢谢。

没有直接访问值的正确方法(所以你自动获得我认为的国际化版本)如下所示:

$node = node_load($nid);
$body = field_get_items('node', $node, 'body');
$teaser = field_view_value('node', $node, 'body', $body[0],'teaser');

要输出$ teaser值,需要将其传递给render()函数

print render($teaser);

JC

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

你的第一个解决方案应该有效,只有你使用了Teaser而不是teaser ,我很确定视图模式区分大小写。 你还有$node->body['en'][0]en语言代码),而你在所有其他例子中都使用了语言代码eng ......这可能是问题吗?

如果$node->body['eng']['0']['summary']不为空,那么你的第二个解决方案就必须工作,所以我再次检查你的var_dump()是否产生了准确的结果(是你吗?在调用$node = node_load($input);之后立即检查var_dump()的输出$node = node_load($input); ,使其成为公平的测试。

同样,如果您的第3个解决方案输出空白字符串,则意味着$node->body['eng']['0']['summary']绝对必须为空。

我强烈建议安装devel模块并使用dpm()函数打印格式良好的对象/数组的分层视图以供检查。 如果你不能这样做,Drupal 7有一个debug()函数可以做类似的事情。 这两个函数的输出都打印到标准的Drupal消息空间。

希望有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM