Ansichten - Gruppe nach dem ersten Buchstaben der Ergebnisse


7

Wie der Titel beschreibt, versuche ich, die Ergebnisse einer Ansicht nach ihrem ersten Buchstaben zu gruppieren. Das Googeln hat mir einen Weg aufgezeigt, wie die Hälfte den Trick macht: Titel zweimal anzeigen, von der Anzeige ausschließen, auf 1 (st) Zeichen beschränken, danach gruppieren. Clever muss ich zugeben, aber ich muss ein Gruppierungsfeld aufdecken, auch wenn es keine Ergebnisse gibt, wie zum Beispiel:

A
  Alpha
  Anekin

B
  Bravo
  Borvo
C

D
  Delta
  Dooku

Irgendwelche Gedanken darüber, wie man das macht?

Antworten:


4

Eine einfache Lösung wäre, ein Feld hinzuzufügen, das nur den ersten Buchstaben und die Gruppe enthält.

Views unterstützt auch das Erstellen eines Glossars, das zwar anders ist, es Ihnen jedoch ermöglicht, nach dem ersten Buchstaben zu gruppieren, die Anzahl der Ergebnisse zu zählen und fx anzuzeigen

A (2) B (2) C (0) als exponierter Filter erfolgt dies durch Kontexte in Ansichten 3.


"Eine einfache Lösung wäre, ein Feld hinzuzufügen, das nur den ersten Buchstaben und die erste Gruppe enthält." Ich habe das in meiner Frage tatsächlich gesagt, aber als "C" zu sehen, bringt mir keine Ergebnisse und ich möchte immer noch, dass es präsentiert wird. Ich kann nicht sehen, wie mir das hilft. Ich werde in Glossar schauen.
Magtak

1
@magtak Sie könnten Theming verwenden, um fehlende Buchstaben hinzuzufügen
googletorp

1
Könnten Sie das bitte näher erläutern?
Magtak

Ich versuche zu verstehen, "eine einfache Lösung wäre, ein Feld hinzuzufügen, das nur den ersten Buchstaben enthält". Sollte ich meinem Inhaltstyp ein Feld hinzufügen und es mit den Buchstaben für jeden Knoten füllen?
brainHax

1

Es war wirklich frustrierend, aber am Ende habe ich es herausgefunden:

In der Ansichtszeile Ausgabestil tpl Datei:

<?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; ?>

Dies funktioniert für mich, da diese Ansicht alle Ergebnisse ausgibt, sodass ich davon ausgehen kann, dass $ view-> result dieselben Elemente wie $ rows enthält. $ rows afaik ist die Ausgabe der aktuellen Seite. Ich bin nicht sicher, ob sich $ view-> result genauso verhält.


0

Schauen Sie sich diesen Artikel auf Drupal.org an. Hoffe, es wird nützlich für dich sein, zumindest hat es mir geholfen.

http://drupal.org/node/1078962


bin während meiner Google-Expedition darauf gestoßen - konnte nichts Nützliches für mein spezielles Problem finden, aber wie oben erwähnt, habe ich es bereits behoben :)
magtak

0

Wir haben tatsächlich Code im Abschnitt "Header" unserer Ansicht hinzugefügt (Eingabemethode für PHP-Code auswählen). Hier ist unser PHP-Code, der genau das tut, wonach Sie suchen (und für den keine separate Vorlagendatei erforderlich ist).

<?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>

ziemlich ähnlich zu meiner Theming-Lösung :)
Magtak
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.