ビュー-結果の最初の文字でグループ化


7

タイトルのとおり、ビューの結果を最初の文字でグループ化しようとしています。グーグルによって、半分がトリックを実行する方法がわかりました。タイトルを2回表示し、表示から除外し、1番目の文字に制限し、グループ化します。賢い私は認めなければならないが、次のような結果がない場合でも、グループ化フィールドを明らかにする必要があります。

A
  Alpha
  Anekin

B
  Bravo
  Borvo
C

D
  Delta
  Dooku

それを行う方法について何か考えはありますか?

回答:


4

簡単な解決策は、最初の文字のみが含まれるフィールドを追加し、それによってグループ化することです。

ビューは用語集の実行もサポートしますが、これは異なりますが、最初の文字でグループ化し、結果の数をカウントしてfxを表示できます

A(2)B(2)C(0)、公開フィルターとして、これはビュー3のコンテキストを介して行われます。


「簡単な解決策は、最初の文字のみが含まれるフィールドを追加し、それによってグループ化することです。」私は実際に私の質問でそれを言ったが、「C」として見ても結果が得られず、それでも提示したいのですが、それがどのように役立つのかわかりません。用語集を調べます。
magtak 2012年

1
@magtakテーマを使用して欠落している文字を追加できます
googletorp

1
詳しく説明してもらえますか?
magtak 2012年

「最初の文字だけが含まれるフィールドを追加するのが簡単な解決策だろう」と理解しようとしています。コンテンツタイプにフィールドを追加して、各ノードの文字を入力する必要がありますか?
brainHax 14

1

それは本当にイライラさせられましたが、結局私はそれを理解しました:

ビュー行の出力スタイルtplファイル:

<?php print $wrapper_prefix; ?>
  <?php if (!empty($title)) : ?>
    <h3><?php print $title; ?></h3>
  <?php endif; ?>

<?php $letters = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
foreach ($letters as $letter):?>
<div class="letter family">
  <div class="letter-header"><?php print $letter;?></div>
<?php print $list_type_prefix;  ?>
  <?php foreach ($rows as $id => $row):?>
    <?php $rest = substr($view->result[$id]->node_title,0,1);?>
  <?php if ($rest == $letter):?>
        <li class="<?php print $classes_array[$id]; ?>"><?php print $row; ?></li>
      <?php endif;?>
  <?php endforeach; ?>
<?php print $list_type_suffix; ?>
</div>
<?php endforeach;?>
<?php print $wrapper_suffix; ?>

そのビューは結果のすべてを出力するので、これは私にとっては機能します。したがって、$ view-> resultには$ rowsと同じ要素があると想定できます。$ rows afaikは現在のページの出力です。$ view-> resultが同じように動作するかどうかはわかりません。


0

Drupal.orgのこの記事をご覧ください。それがあなたに役立つことを願っています、少なくともそれは私を助けました。

http://drupal.org/node/1078962


私のグーグル遠征中にそれを偶然見つけました-私の特定の問題に役立つものを見つけることができませんでしたが、私が上で述べたように私はすでにそれを修正しました:)
magtak

0

ビューの「ヘッダー」部分にコードを実際に追加しました(PHPコードへの入力メソッドを選択)。これがあなたが探していることをする私たちのphpコードです(そしてそれは別個のテンプレートファイルを必要としません)。

<?php
  $letters = array(
    'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','y','z'
  );  
?>  
<h2>Browse by Last Name</h2> 
<ul> 
  <li style="display:inline; padding-right:8px;"> 
    <a href="/Full_time_Faculty_Listing" >All</a>
  </li>
  <?php for ($i=0; $i<count($letters); $i++): ?> 
    <li style="display:inline; padding-right:8px;"> 
      <a href="https://drupal.stackexchange.com/Full_time_Faculty_Listing/<?php print $letters[$i];?>"><?php print strtoupper($letters[$i]);?></a>
    </li> 
  <?php endfor; ?> 
</ul>

私のテーマ設定ソリューションとかなり似ています:)
magtak 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.