ビューデータのエクスポートを使用して、CSVと手動入力をインポートし、主要な情報をXMLフィード/ファイルにエクスポートするようにサイトを設定しています。フィールドのグループを追加する必要があるときに問題が発生します。ユーザーはこれらのフィールドグループを必要な数だけ追加でき、ネストされたアイテムとして1行の出力に表示されます。
フィールドコレクションを使用すると、出力は無効なXMLを生成するか、すべてのラッパーが取り除かれ、プレーンテキストになります。テーマでカスタムテンプレートファイルを試しましたが、ビューのデータエクスポートでタグが取り除かれています。
必要な出力
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<file_information xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<asset_data>
<upn>GBHIS3473610HD30P001</upn>
<title>My Title</title>
<version>Sunday 26th January</version>
<duration>00:00:30:00</duration>
<tc_in>10:00:00:00</tc_in>
<tc_out>10:00:30:00</tc_out>
<aspect_ratio>16:9</aspect_ratio>
<segment>
<sequence>1</sequence>
<tc_in>10.00.00.00</tc_in>
<tc_out>10.00.30.00</tc_out>
</segment>
<segment>
<sequence>2</sequence>
<tc_in>DMC</tc_in>
<tc_out>DMC</tc_out>
</segment>
<segment>
<sequence>3</sequence>
<tc_in>DMC</tc_in>
<tc_out>DMC</tc_out>
</segment>
<segment>
<sequence>4</sequence>
<tc_in>DMC</tc_in>
<tc_out>DMC</tc_out>
</segment>
</asset_data>
</file_information>
実際の出力(残りのXMLは問題ありません)
<segment>
<sequence>
<section class="field field-name-field-sequence field-type-number-integer field-label-above view-mode-full">
<h2 class="field-label">sequence:&nbsp;</h2>
<div class="field-items">
<div class="field-item even">1</div>
</div>
</section>
</sequence>
<tc_in>
<section class="field field-name-field-tc-in field-type-hms-field field-label-above view-mode-full">
<h2 class="field-label">tc_in:&nbsp;</h2>
<div class="field-items">
<div class="field-item even">
<span class="hms hms-format-h-mm-ss">0:00:00</span>
</div>
</div>
</section>
</tc_in>
<tc_out>
<section class="field field-name-field-tc-out field-type-hms-field field-label-above view-mode-full">
<h2 class="field-label">tc_out:&nbsp;</h2>
<div class="field-items">
<div class="field-item even">
<span class="hms hms-format-h-mm-ss">0:00:30</span>
</div>
</div>
</section>
</tc_out>
<sequence>
<section class="field field-name-field-sequence field-type-number-integer field-label-above view-mode-full">
<h2 class="field-label">sequence:&nbsp;</h2>
<div class="field-items">
<div class="field-item even">2</div>
</div>
</section>
</sequence>
<tc_in>
<section class="field field-name-field-tc-in field-type-hms-field field-label-above view-mode-full">
<h2 class="field-label">tc_in:&nbsp;</h2>
<div class="field-items">
<div class="field-item even">
<span class="hms hms-format-h-mm-ss">0:00:00</span>
</div>
</div>
</section>
</tc_in>
<tc_out>
<section class="field field-name-field-tc-out field-type-hms-field field-label-above view-mode-full">
<h2 class="field-label">tc_out:&nbsp;</h2>
<div class="field-items">
<div class="field-item even">
<span class="hms hms-format-h-mm-ss">0:00:20</span>
</div>
</div>
</section>
</tc_out>
</segment>
では、出力をカスタマイズするにはどうすればよいですか、またはフィールドコレクション以外のものを使用する必要がありますか?
私の内容field-collection-item.tpl.php
<sequence><?php print render($content['field_sequence']); ?></sequence>
<tc_in><?php print render($content['field_tc_in']); ?></tc_in>
<tc_out><?php print render($content['field_tc_out']); ?></tc_out>
私の内容views-data-export-xml-body.tpl.php
<?php
$item_item = 'asset_data';
?>
<?php foreach ($themed_rows as $count => $row): ?>
<<?php print $item_item; ?>>
<?php foreach ($row as $field => $content): ?>
<?php if($content != NULL){ ?>
<?php $content = str_replace("<","<",$content);
$content = str_replace(">",">",$content); ?>
<<?php print $xml_tag[$field]; ?>><?php print_r $content; ?></<?php print $xml_tag[$field]; ?>>
<?php } ?>
<?php endforeach; ?>
</<?php print $item_item; ?>>
<?php endforeach; ?>
@Molotが示唆したように、私はfields.tpl.phpをクリーンアップする必要がありましたが、名前にタイプミスがあったため、困惑しました。
これに加えて、views-data-export-xml-body.tpl.phpにいくつかのロジックを追加して、フィールドアイテムの各セットを個別にラップする必要がありました。
(str_replaceを使用して最後の要素の終了タグを検索し、終了および開始ラッパータグを挿入します)
$content = str_replace("/tc_out> <sequence>","/tc_out> </segment>
<segment> <sequence>",$content);