Для того, чтобы делать то, что вы хотите, используя Представления, а не какой-либо другой модуль, например Глоссарий, вам нужно определить и задать тему для собственного представления.
Сначала вам нужно создать новый узел View.Я собираюсь назвать это Myglossary, но это не имеет значения.Убедитесь, что одно из ваших полей является заголовком узла, и что оно отсортировано по заголовку узла по возрастанию.Другими словами, в алфавитном порядке.Я предполагаю, что вы будете использовать неформатированный стиль строки (это по умолчанию), но вы, вероятно, можете сделать что-то похожее с другими стилями строки.
Затем вам нужно будет перейти к своей теме.Из папки views / theme скопируйте шаблон views-view-unformatted.tpl.php в папку используемой темы.Переименуйте его в views-view-unformatted - myglossary.tpl.php, чтобы он использовался только для этого представления.Затем откройте файл template.php вашей темы и добавьте функцию предварительной обработки:
//Change mytheme to your theme name
function mytheme_preprocess_views_view_unformatted__myglossary(&$vars) {
//If you have the devel module installed,
//this is a great way to see all the available variables
//dpm($vars);
$results = $vars['view']->result;
$rows = $vars['rows'];
//Sort rows into letter sets
$letters = array();
$i = 0;
foreach ($results as $result) {
$first_letter = strtolower(substr($result->node_title, 0, 1));
if (is_array($letters[$first_letter])) {
array_push($letters[$first_letter], $rows[$i]);
}
else {
$letters[$first_letter] = array($rows[$i]);
}
$i++;
}
//Generate glossary navigation
$nav = '';
foreach($letters as $letter => $rows) {
$num = count($rows);
$cap_letter = strtoupper($letter);
$nav .= <<<NAV
<a href="#$letter" class="letter_link">
$cap_letter
</a>
($num)
NAV;
}
//Add to variables
$vars['nav'] = $nav;
$vars['letters'] = $letters;
}
Затем вам придется изменить файл шаблона, который вы скопировали ранее, чтобы добавить его в навигацию и вывестистроки в стиле глоссария:
<?php if (!empty($title)): ?>
<h3><?php print $title; ?></h3>
<?php endif; ?>
<?php if (!empty($nav)): ?>
<div id="glossary_nav">
<?php print $nav; ?>
</div>
<?php endif; ?>
<?php foreach ($letters as $letter=>$rows): ?>
<a name="<?php print $letter ?>"></a>
<h4 class="letter">
<?php print strtoupper($letter); ?>
</h4>
<?php foreach ($rows as $id=>$row): ?>
<div class="<?php print $classes[$id]; ?>">
<?php print $row; ?>
</div>
<?php endforeach;?>
<?php endforeach; ?>
Вам может потребоваться заново создать реестр тем, чтобы ваши изменения отображались на вашем сайте.