1

我希望在 page.tpl.php 中单独呈现每个字段。我的情况是,我有一个图像字段、无限值和幻灯片格式。我想使用幻灯片格式呈现此字段并将其放置在我想要的任何位置。

我尝试了以下方法,但这没有应用正确的格式,它只是以默认格式输出:

$field_view_field_field_banners = field_view_field('node', $node, 'field_banners');
$field_view_field_field_banners['#formatter'] = 'slideshow'; // I added this because the formatter was 'image'
echo render($field_view_field_field_banners);

非常感谢您对此的任何帮助!

4

1 回答 1

1

采用的第四个参数field_view_field可以是视图模式的名称,也可以是显示设置键的数组:labeltypesettingsweight

看起来好像您正在尝试指定字段的格式,但实际上field_view_field正在寻找一种称为“幻灯片放映”的视图模式(如默认或预告片)。

代替

$foo = field_view_field('node', $node, 'field_banners', 'slideshow');

尝试:

$foo = field_view_field('node', $node, 'field_banners', array('type' => 'slideshow'));

您的第二个问题的答案实际上是基于上述问题。区别在于视图模式和字段格式化程序。当您导航到

/admin/structure/types/manage/foo/display 

您有两种默认视图模式:DefaultTeaser. 如果您已将field_banners字段设置为在默认视图模式下使用slideshow格式化程序,那么甚至不需要使用第四个参数,因为当未指定时将使用“默认”视图模式。

在那种情况下,你可以这样做: $foo = field_view_field('node', $node, 'field_banners');

并在渲染时$foo具有slideshow格式。

查看field_view_field的 Drupal API 文档。

于 2013-05-18T15:19:44.770 回答