web-dev-qa-db-ja.com

内部のviews-view-list.tpl.phpからフィールド値を直接取得します

views-view-list.tpl.phpの内部には、次のようなループがあります。

<?php foreach ($rows as $id => $row): ?>
  <li class="<?php print $classes_array[$id]; ?>"><?php print $row; ?></li>
<?php endforeach; ?>

HTMLのレンダリングをviews-view-fields.tpl.phpに渡すのではなく、各アイテム内のフィールドの実際の値にアクセスできるようにしたい。

疑似コードで、私はこれをしたいと思います(このコードは機能しません):

<?php foreach ($rows as $id => $row): ?>
  <?php print $row->$fields['field_my_field_name']; ?>
<?php endforeach; ?>

<?php foreach ($rows as $id => $row): ?>
  <?php print $row->$fields['field_my_second_field_name']; ?>
<?php endforeach; ?>

実際に$rowオブジェクトを使用しますか、それとも他のものを使用しますか?

1
Indigenuity

views-view-list.tpl.phpファイルは、フィールドではなく行のリストを表示するためのビューテンプレートです。

テーマのみのフィールド:

<?php foreach ($fields as $id => $field): ?>
    <li><?php print $field->content; ?></li>
<?php endforeach; ?>

*ファイル:views-view-fields-[ビュー名]-[display] .tpl.php

出力全体のテーマ設定:

<div class="<?php print $classes; ?>">
    <?php foreach ($view->style_plugin->rendered_fields as $delta => $item): ?>
        <li><?php print $item['field_my_field_name']; ?></li>
    <?php endforeach; ?>
</div>

*ファイル:views-view-[ビュー名]-[display] .tpl.php

2
Jack-PL

これを解決するのに少し時間がかかったので、使用したソリューションを共有しました。

<?php foreach ($rows as $id => $row): ?>
    <?php print $view->render_field('field_my_field_name', $id);?>
<?php endforeach; ?>

<?php foreach ($rows as $id => $row): ?>
    <?php print $view->render_field('field_my_second_field_name', $id);?>
<?php endforeach; ?>
3
Jezer

ほとんどのビューテンプレート内には、ビューオブジェクト全体を含む_$view_変数があります。その内部では、基本的には行の配列である_$view->result_を介して生の結果にアクセスできます。 drupal_set_message('<pre>' . print_r($view->result, TRUE) . '</pre>')または同等のものを投入すると、何を処理する必要があるかがわかります。

1
Jimajamma

最も簡単な方法は次のとおりです。$ fields ["field_name"]-> content;ここで、field_name-> cckフィールド名。

お役に立てれば幸いです!!

乾杯!ラージ

0