web-dev-qa-db-ja.com

views-view-fields--view-name.tpl.phpのフィールドの呼び出し----エラー

コード行を使用してフィールドを呼び出そうとしています:

<?php print $field->handler->view->field['title_1']; ?>

しかし、私はこのエラーを受け取り続けます:

enter image description here

Devel dpm()を使用して、それを呼び出すための正しいパスを探しましたが、handler->view->field['title_1']。私は完全に困惑しており、正しい.tpl.phpファイルを使用しているかどうかはわかりません。誰かアイデアはありますか?

---編集---

<?php foreach ($fields as $id => $field): ?>
  <?php if (!empty($field->separator)): ?>
  <?php print $field->separator; ?>
<?php endif; ?>

<?php print $field->wrapper_prefix; ?>
<?php print $field->label_html; ?>
<?php print $field->content; ?>
<div>
    <?php print $field->handler->view->field['title_1']; ?>
</div>
<?php print $field->wrapper_suffix; ?>
2
scapegoat17

解説からは、いくつかのポイントが抜けていますが、このテンプレートは、ビューからフィールドの「行」を作成するために使用されます。

簡単なものを作成しましょう:

enter image description here

これには、タイトル、新しいフィールド、カスタムフィールドの3つのフィールドがあり、実行すると次のようになります。

enter image description here

次に、_views-view-fields--for-da.tpl.php_を作成し、テンプレートを再スキャンして、その上部にデバッグ情報を追加します。

_drupal_set_message('<pre>' . print_r(array_keys($fields), TRUE) . '</pre>');
_

もう一度実行すると、次のようになります。

enter image description here

したがって、今、このテンプレート内のどこにいても、次のように個々のフィールドのコンテンツにアクセスできます。

_$fields['title']->content
$fields['field_new_field']->content
$fields['field_my_custom_field']->content
_

したがって、同様のdrupal_set_message() sでそれらをスローすると、以下が生成されます。

enter image description here

しかし、今、これらのフィールドの1つを表示から除外しているとしましょう。例:

enter image description here

その後、これを取得します:

enter image description here

しかし、以下を介して_$row_をさらに掘り下げます:

_drupal_set_message('<pre>' . print_r($row->field_field_my_custom_field, TRUE) . '</pre>');
_

これを与えるでしょう:

enter image description here

または除外されたフィールドのコンテンツへのアクセス:

_$row->field_field_my_custom_field[0]['rendered']['#markup']
_

明らかに、ここではフィールド名が特定の例とは異なりますが、ロジックに従ってください。

また、_$row_を調べたくない場合は、常にビューUIを介してフィールドを表示に含め、このテンプレートから除外することができます。たとえば、次のようにします。

_<?php foreach ($fields as $id => $field): ?>
  <?php if ($id != 'field_my_custom_field'): ?>
    <?php if (!empty($field->separator)): ?>
      <?php print $field->separator; ?>
    <?php endif; ?>

    <?php print $field->wrapper_prefix; ?>
      <?php print $field->label_html; ?>
      <?php print $field->content; ?>
      <div class="insert-custom-field-content-here">
        <?php print $fields['field_my_custom_field']->content; ?>
      </div>
    <?php print $field->wrapper_suffix; ?>
  <?php endif; ?>
<?php endforeach; ?>
_

カスタムフィールドを除くすべてのフィールドを印刷しますが、他の各フィールドの内容の後にその内容を含めます。

2
Jimajamma