2012-10-11 56 views
1

我正在寻找在page.tpl.php中单独呈现每个字段。我的情况是,我有一个图像字段,无限制的值和幻灯片格式。我想把这个领域与幻灯片格式呈现并将其放在任何我想要的地方。单独呈现字段drupal

我试过以下,但这并不适用于正确的格式,它只是默认的格式输出:

$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); 

任何帮助是非常感谢!

+0

好的发现我经历了代码后错过了一些非常基本的东西。它需要像这样的显示: $ field_view_field_field_banners = field_view_field('node',$ node,'field_banners','slideshow'); echo render($ field_view_field_field_banners); 有一件让我烦恼的事情是,我怎样才能找出字段默认显示,而不必手动把它呢? – synkyo

回答

1

第四个参数即field_view_field需要可以是一个视图模式的名称,或者它可以是显示设定键的阵列:labeltypesettings,和weight

看起来好像您正在尝试指定字段的格式,但发生了什么事是field_view_field正在寻找称为“幻灯片放映”的视图模式(如默认或Teaser)。

而不是

$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格式。

查看Drupal API文档field_view_field