dl
、dt
、dd
タグを使用してフィールドコレクションを出力したい。コレクションには2つのフィールドがあります-field_heading
およびfield_text
。各field_headingをdtにし、それぞれfield_text
をdd
にし、セット全体をdl
でラップします。
私はこれをfield--my-collection--my-content-type.tpl.php
そしてその field--my-field.tpl.php
は見出しフィールドとテキストフィールドです。
問題は、フィールドコレクションの各アイテムでdiv
が(フィールドコレクションモジュールによって)生成されていることです。 (div class="field-collection-view clearfix view-mode-full"
)このdivは、見出しとテキスト要素を一緒にラップします。したがって、divはdl
の内部で、dt
の前に挿入されます。 dt
はdl
の直接の子である必要があるため、これは問題です。
このdivなしでフィールドコレクションをレンダリングする方法はありますか?
フィールド--my-collection--my-content-type.tpl.php
<dl class = 'accordion'>
<?php foreach ($items as $delta => $item){ ?>
<?php print render($item); ?>
<?php } ?>
</dl>
field--field-heading.tpl.php
<dt>
<?php foreach ($items as $delta => $item){
print render($item);
} ?>
</dt>
フィールド-フィールド-テキスト.tpl.php
<dd>
<?php foreach ($items as $delta => $item){
print render($item);
} ?>
</dd>
Template.phpの theme_field_collection_view テーマ関数をオーバーライドする必要があります。
テーマフォルダに配置する「field-collection-view.tpl.php」ファイルを作成します
ファイルの内容:_<?php print $element['#children']; ?>
_
それが今何をしているのかを正確に出力したい場合(私はあなたがそうしていないことを知っています)、あなたはこのコンテンツを持っているでしょう:
<?php print '<div' . drupal_attributes($element['#attributes']) . '>' . $element['#children'] . '</div>'; ?>