Ben*_*rne 2 php drupal drupal-7
我有一个节点ID数组,通过它循环并运行node_load($nid)以检索每个节点的数据.以下面的代码为例 - 这大致是它目前的工作原理.
foreach( $node->field_flights['und'] as $flight ):
$flightNode = node_load($flight['nid']);
echo $flightNode->title;
Run Code Online (Sandbox Code Playgroud)
我想要实现的是加载节点,然后能够执行某些操作,echo render($flightNode);以便加载该节点的模板文件,并且我可以$title_suffix在已加载的节点模板中呈现该变量.
我试过以下无济于事.根本没有输出.
$flightNode = node_load($flight['nid']);
$builtFlightNode = node_build_content( $flightNode );
echo render( $builtFlightNode );
Run Code Online (Sandbox Code Playgroud)
如果有人能够对此提供任何见解,那将非常感激.
您可以使用它node_view()来准备渲染数组.对于性能,考虑使用node_load_multiple()(和它的对应物node_view_multiple())可能是明智的:
$nids = array();
foreach($node->field_flights['und'] as $flight):
$nids[] = $flight['nid'];
endforeach;
$flight_nodes = node_load_multiple($nids);
$view_mode = 'teaser'; // could also be 'full'
$views = node_view_multiple($flight_nodes, $view_mode);
// Renders all nodes in one go
echo render($views);
Run Code Online (Sandbox Code Playgroud)
如果这不符合你正在做的事情,虽然这应该在逐个节点的基础上工作:
foreach($node->field_flights['und'] as $flight):
$flight_node = node_load($flight['nid']);
$view = node_view($flight_node, $view_mode);
echo render($view);
endforeach;
Run Code Online (Sandbox Code Playgroud)
如果您需要在呈现内容之前修改内容,您可以在执行内容之前单步执行$views或$view更改所需内容render().如果您只想渲染节点内容的特定部分,请再次单步执行数组并应用于render您感兴趣的特定子数组.