lượt xem - nhóm theo chữ cái đầu tiên của kết quả


7

Như tiêu đề mô tả, tôi đang cố gắng nhóm các kết quả của một lượt xem bằng chữ cái đầu tiên của họ. Googling đã tiết lộ một cách cho tôi rằng một nửa thực hiện thủ thuật: hiển thị tiêu đề hai lần, loại trừ khỏi hiển thị, giới hạn ở 1 (st) ký tự, nhóm theo đó. Thông minh Tôi phải thừa nhận nhưng tôi cần tiết lộ một trường nhóm ngay cả khi không có kết quả nào trong đó, chẳng hạn như:

A
  Alpha
  Anekin

B
  Bravo
  Borvo
C

D
  Delta
  Dooku

Bất kỳ suy nghĩ về làm thế nào để làm điều đó?

Câu trả lời:


4

Một giải pháp đơn giản là thêm một trường chỉ có chữ cái và nhóm đầu tiên.

Lượt xem cũng hỗ trợ thực hiện bảng chú giải, tuy khác nhưng cho phép bạn nhóm theo chữ cái đầu tiên và đếm số lượng kết quả và hiển thị fx

A (2) B (2) C (0), như một bộ lọc tiếp xúc, điều này được thực hiện thông qua các bối cảnh trong chế độ xem 3.


"Một giải pháp đơn giản sẽ là thêm một trường chỉ có chữ cái và nhóm đầu tiên." Tôi thực sự đã nói rằng trong câu hỏi của tôi nhưng xem là "C" không cho tôi bất kỳ kết quả nào và tôi vẫn muốn nó được trình bày tôi không thể thấy điều đó giúp tôi như thế nào. Tôi sẽ xem xét Thuật ngữ.
magtak

1
@magtak Bạn có thể sử dụng chủ đề để thêm các chữ cái bị thiếu
googletorp

1
bạn có thể vui lòng giải thích về điều đó?
magtak

Tôi đang cố gắng hiểu "Một giải pháp đơn giản sẽ là thêm một trường chỉ có chữ cái đầu tiên". Tôi có nên thêm một trường trong loại nội dung của mình và điền nó với các chữ cái cho mỗi nút không?
brainHax

1

Nó thực sự rất bực bội nhưng cuối cùng tôi đã hiểu ra:

Trong tệp tpl kiểu đầu ra hàng xem:

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

Điều này hoạt động với tôi vì chế độ xem đó vượt qua tất cả các kết quả của nó vì vậy tôi có thể giả định một cách an toàn $ view-> kết quả sẽ có cùng các phần tử trong đó là các hàng $. $ rows afaik là đầu ra của trang hiện tại. Tôi không chắc chắn nếu $ view-> kết quả hoạt động theo cùng một cách.


0

Hãy xem bài viết này trong Drupal.org. Hy vọng nó sẽ hữu ích cho bạn, ít nhất nó đã giúp tôi.

http://drupal.org/node/1078962


tình cờ phát hiện ra nó trong chuyến thám hiểm google của tôi - không thể tìm thấy bất cứ điều gì hữu ích cho vấn đề cụ thể của tôi nhưng như tôi đã nói ở trên tôi đã sửa nó rồi :)
magtak

0

Chúng tôi thực sự đã thêm mã trong phần "Tiêu đề" trong chế độ xem của mình (chọn phương thức nhập vào mã PHP). Đây là mã php của chúng tôi thực hiện những gì bạn đang tìm kiếm (và nó không yêu cầu một tệp mẫu riêng).

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

khá giống với giải pháp theo chủ đề của tôi :)
magtak
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.