Answers:
一个简单的解决方案是添加一个仅包含第一个字母和分组的字段。
视图还支持做词汇表,这是一个不同的过程,但是允许您按首字母分组并计算结果数并显示fx
A(2)B(2)C(0),作为暴露的过滤器,这是通过视图3中的上下文完成的。
确实令人沮丧,但最终我发现了这一点:
在视图行中输出样式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的行为是否相同。
看一下Drupal.org中的这篇文章。希望它对您有用,至少对我有所帮助。
实际上,我们在视图的“标题”部分添加了代码(将输入法选择为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>