web-dev-qa-db-ja.com

Drupal 7ビューのコンテキストフィルター(分類:要約表示)、term-idの代わりに読み取り可能なterm-nameを表示する

私の見解では、コンテキストフィルターを使用しており、デフォルトで "summary output "—分類用語で結果をフィルターします。

問題は、summary-resultが分類のリストterm-id's(ノード数を含む)であり、人間が読める用語ID名ではありません。

  • 1 (21)
  • 2 (16)
  • 等.

Term-idをリストするのではなく、term-id-nameをリストすることによって、要約のビュー出力を変更(またはフック)することは可能ですか?

  • 用語名A(21)
  • 用語名B(16)

(実際のリクエストURLが変わらなくても問題ありません。)

私の目標は、エンドユーザーが理解できる、分類用語の概要のより読みやすい出力形式を作成することです。

9
Stefan Looij
  1. ビューをフィールドに設定し、関連付けられた分類用語を含むフィールドを公開します。

  2. 分類用語をフィルタリングするようにコンテキストフィルターを設定し、バリデーターを含めるように選択します。

  3. バリデーターを分類用語に設定し、ボキャブラリーのチェックボックスをオンにします。

  4. フィルター値タイプのオプションを選択します '用語IDに変換された用語名。

  5. フィルターを保存してプレビューボックスに移動します。用語のテキスト名を入力すると、目的のコンテンツが表示されます。

URlから情報を渡す場合、マシン名にダッシュを使用するため、「URL内のダッシュを用語名フィルター値のスペースに変換する」チェックボックスも選択する必要がある場合があります。

7
Ashlar

「views_view-summary.tpl.php」ファイルを「modules/contrib/views/theme」フォルダにコピーします。 (ファイル名のサフィックスを追加することで、表示またはブロック固有にすることができます。)

注:これを管理ビュー表示として使用する場合は、このファイルをデフォルトのテーマフォルダではなく、管理テーマフォルダ内にコピーしてください。

表示設定を変更する必要はありません。 tpl-overrideを次の行に調整するだけで、Term-IDが読み取り可能なTerm-nameに変換されます。

<div class="item-list">
  <ul class="views-summary">
    <?php foreach ($rows as $id => $row): ?>
    <li>
      <a href="<?php print $row->url; ?>"<?php print !empty($row_classes[$id]) ? ' class="'. $row_classes[$id] .'"' : ''; ?>>
        <?php
        /* begin replacement */
        $term_object = taxonomy_term_load($row->link);
        print  $term_object->name; 
        /* end replacement*/
        ?>
      </a>
      <?php if (!empty($options['count'])): ?>
      &nbsp;(<?php print $row->count?>)
      <?php endif; ?>
    </li>
    <?php endforeach; ?>
  </ul>
</div>
5
Stefan Looij
1
uwe