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

取る4番目のパラメーターfield_view_fieldは、ビューモードの名前にすることも、表示設定キーの配列にすることもできます:label、、、、および。typesettingsweight

フィールドの形式を指定しようとしているように見えますが、何が起こっているのかfield_view_fieldというと、「スライドショー」と呼ばれる表示モード(デフォルトやティーザーなど)を探しているということです。

それ以外の

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

試す:

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

2番目の質問に対する答えは、実際には上記の質問に基づいています。違いは、ビューモードとフィールドフォーマッタの違いです。に移動すると、

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

2つのデフォルトの表示モードがあること:DefaultTeaserfield_bannersデフォルトの表示モードでフォーマッターを使用するようにフィールドを設定したslideshow場合、何も指定されていない場合は「デフォルト」の表示モードが使用されるため、4番目のパラメーターを使用する必要はありません。

そのシナリオでは、次のようにすることができます。$ foo = field_view_field('node'、$ node、'field_banners');

レンダリングされたとき$fooのフォーマットになります。slideshow

field_view_fieldのDrupalAPIドキュメントを確認してください。

于 2013-05-18T15:19:44.770 に答える