web-dev-qa-db-ja.com

デフォルトのdivなしでフィールドコレクションをレンダリングする方法

dldtddタグを使用してフィールドコレクションを出力したい。コレクションには2つのフィールドがあります-field_headingおよびfield_text。各field_headingをdtにし、それぞれfield_textddにし、セット全体を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の前に挿入されます。 dtdlの直接の子である必要があるため、これは問題です。

この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>
5
naomi

Template.phpの theme_field_collection_view テーマ関数をオーバーライドする必要があります。

8
Anil Sagar

テーマフォルダに配置する「field-collection-view.tpl.php」ファイルを作成します

ファイルの内容:_<?php print $element['#children']; ?>_

それが今何をしているのかを正確に出力したい場合(私はあなたがそうしていないことを知っています)、あなたはこのコンテンツを持っているでしょう:

<?php print '<div' . drupal_attributes($element['#attributes']) . '>' . $element['#children'] . '</div>'; ?>

1
rosell.dk