【问题标题】:Drupal : Cleanest way to loop throught field_image in a node templateDrupal:在节点模板中循环遍历 field_image 的最简洁方法
【发布时间】:2025-12-09 02:15:01
【问题描述】:

我正在为我的新 Drupal 7 主题中的一个节点设置主题,并且我想使用带有自定义标记的幻灯片。

我的节点有一个包含多个图像的图像字段 (field_image)。

现在我可以用这个检索生成代码:

$node = node_load($nid);
$image = $content['field_image']["#object"]->field_image;
//htmldump($image);

foreach ($image as $key=>$value) {

  $output = field_view_value('node', $node, 'field_image', $image[$key], array(
    'type' => 'image',
    'settings' => array(
      'image_style' => 'thumbnail', //place your image style here
      'image_link' => 'content',
    ),
  ));
  print render($output);
}

这工作正常,但我不确定这是最好的方法。

1) 我如何使用“建议”或“钩子”(我对这个概念不是很熟悉,只是在我的 template.php 中使用了默认存在的那些)

2) $content['field_image']["#object"]->field_image; 是否健壮且有更新证明?

编辑: <div class="b-slick"> <div class="b-slick__slide"><img typeof="foaf:Image" src="http://localhost/blabla/pic1.jpg" width="978" height="651" alt=""></div> <div class="b-slick__slide"><img typeof="foaf:Image" src="http://localhost/blabla/pic2.jpg" width="978" height="651" alt=""></div> </div>

【问题讨论】:

  • hmmm... 有几个模块提供幻灯片,你研究过吗?如果这不是一个选项,那么认为您需要分享更多由 Drupal 生成的标记所缺少的内容,以便我们提供帮助..
  • 感谢 Alberto,但正如我所写,结果效果很好。但这对我来说似乎很冗长。所以我想知道是否有更清洁的方法来获得相同的结果。另外:$image = $content['field_image']["#object"]-&gt;field_image; 对我来说似乎有点弱。我将进行编辑以显示结果标记。

标签: php drupal-7 drupal-theming


【解决方案1】:

您可以使用以下代码:

<?php 
foreach ($content['field_images'] as $key=>$image):
if(is_numeric($key)): 
print render($content['field_images'][$key]); 
endif;
endforeach;
?>

【讨论】:

  • 是的!更简洁。但是我失去了控制选项数组。
  • 控制选项数组?请解释
  • 这是我的问题中 field_view_value() 中的数组。它允许我选择大小、设置链接等。
  • 您可以通过更改该内容类型的“管理显示”下字段的显示设置来管理这些选项。
最近更新 更多