Vla*_*ita 4 php drupal teaser drupal-7
我有一个Ajax处理程序脚本,我在其中加载$nodeId并在默认(完整)视图中输出结果:
$node = node_load($input);
$prerendered_node = node_view( $node, 'default' );
...
Run Code Online (Sandbox Code Playgroud)
现在我需要显示预告片(摘要或修剪).
到目前为止我试过这个,没有成功(摘要内容填写):
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)
Run Code Online (Sandbox Code Playgroud)
这个问题的解决方案但不起作用:
3. $output = truncate_utf8(strip_tags($node->body['eng']['0']['summary']),200,true,true);
echo $output; (blank)
Run Code Online (Sandbox Code Playgroud)
好奇的是var_dump($node->body['eng']['0'])显示和包含value(正文)summary,clean_summary和其他元素的数组,并且summary具有填充的必要值.但是在示例2中我无法直接访问它,它显示为空白.
提示,好吗?
谢谢.
jon*_*hot 10
没有直接访问值的正确方法(所以你自动获得我认为的国际化版本)如下所示:
$node = node_load($nid);
$body = field_get_items('node', $node, 'body');
$teaser = field_view_value('node', $node, 'body', $body[0],'teaser');
Run Code Online (Sandbox Code Playgroud)
要输出$ teaser值,需要将其传递给render()函数
print render($teaser);
Run Code Online (Sandbox Code Playgroud)
JC
我想这是一个多语言网站,否则你可能会找到你想要的东西$node->body['und'][0](即und未定义的语言代码)?
你的第一个解决方案应该工作,只有你用过Teaser而不是teaser,我很确定视图模式是区分大小写的.你也有$node->body['en'][0](语言代码en),而你eng在所有其他例子中都使用了语言代码......这可能是问题吗?
如果$node->body['eng']['0']['summary']不是空的话,你的第二个解决方案就必须工作,所以我再次检查你var_dump()是否产生了准确的结果(例如,你var_dump()在调用之后立即检查输出是否$node = node_load($input);公平测试).
同样,如果您的第3个解决方案输出空白字符串,则表示$node->body['eng']['0']['summary']绝对必须为空.
我强烈建议安装devel模块并使用该dpm()函数打印格式良好的对象/数组的分层视图以供检查.如果你不能这样做,Drupal 7有一个debug()类似的功能.这两个函数的输出都打印到标准的Drupal消息空间.
希望有所帮助!
| 归档时间: |
|
| 查看次数: |
9240 次 |
| 最近记录: |