Um zu tun, was Sie mit Ansichten tun möchten, und nicht mit anderen Modulen wie Glossar, müssen Sie Ihre eigene Ansicht definieren und gestalten.
Zuerst müssen Sie einen neuen Knoten Ansicht erstellen. Ich werde es Myglossar nennen, aber das spielt keine Rolle. Stellen Sie sicher, dass eines Ihrer Felder der Name des Knotens ist und dass er nach dem Knotentitel aufsteigend sortiert ist. Mit anderen Worten, alphabetische Reihenfolge. Ich gehe davon aus, dass Sie den unformatierten Zeilenstil (Standard) verwenden, aber Sie können wahrscheinlich etwas Ähnliches mit den anderen Zeilenstilen machen.
Dann müssen Sie in Ihr Thema einsteigen. Kopieren Sie im Ordner views/theme die Vorlage views-view-unformatted.tpl.php in den Ordner des verwendeten Designs. Benennen Sie es in views-view-unformatted um - myglossary.tpl.php so dass es nur für diese Ansicht verwendet wird. Öffnen Sie dann Ihr Thema der template.php Datei auf, und fügen Sie ein Vorprozess Funktion:
//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;
}
Dann werden Sie die Vorlage Datei, die Sie über früher kopiert ändern müssen in der Navigation hinzuzufügen, und zur Ausgabe der Reihen in einem Glossar Stil:
<?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; ?>
möglicherweise müssen Sie das Thema Registry regenerieren, um die Änderungen auf Ihrer Website zeigen, bis zu haben.
Dieser Ansatz funktioniert möglicherweise, aber Sie müssen dies nicht tun. Sie können denselben Effekt ohne benutzerdefinierten Code erzielen. – messedup