просмотры - группировка по первой букве результатов


7

Как следует из названия, я пытаюсь сгруппировать результаты просмотра по первой букве. Googling показал мне способ, которым половина делает трюк: отображать заголовок дважды, исключать из отображения, ограничивать до 1 (ст) символа, группировать по нему. Умный Я должен признать, но мне нужно раскрыть поле группировки, даже если в нем нет результатов, таких как:

A
  Alpha
  Anekin

B
  Bravo
  Borvo
C

D
  Delta
  Dooku

Есть мысли о том, как это сделать?

Ответы:


4

Простым решением было бы добавить поле, которое имело бы только первую букву и группу.

Представления также поддерживают создание глоссария, который отличается, но позволяет группировать по первой букве, подсчитывать количество результатов и показывать fx.

A (2) B (2) C (0), в качестве экспонированного фильтра, это делается через контексты в представлениях 3.


«Простым решением было бы добавить поле, в котором только первая буква и группа». Я на самом деле сказал это в своем вопросе, но, видя, как «С» не дает мне никаких результатов, и я все еще хочу представить его, я не вижу, как это помогает мне. Я посмотрю в глоссарий.
magtak

1
@magtak Вы можете использовать их, чтобы добавить пропущенные буквы
googletorp

1
не могли бы вы уточнить это?
magtak

Я пытаюсь понять: «Простое решение - добавить поле, в котором только первая буква». Должен ли я добавить поле в свой тип контента и заполнить его буквами для каждого узла?
brainHax

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 будет содержать те же элементы, что и строки $. $ row afaik - вывод текущей страницы. Я не уверен, что $ view-> result ведет себя так же.


0

Взгляните на эту статью на Drupal.org. Надеюсь, это будет полезно для вас, по крайней мере, это помогло мне.

http://drupal.org/node/1078962


наткнулся на него во время моей экспедиции Google - не смог найти ничего полезного для моей конкретной проблемы, но, как я уже говорил выше, я уже исправил это :)
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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.