Ich habe tatsächlich den unteren Rand von Google erreicht und versucht herauszufinden, wie jeder Zeile einer Ansicht eine CSS-Klasse hinzugefügt werden kann. Der Trick besteht darin, dass die Klasse für jede Zeile dynamisch anhand einiger Daten vom Knoten bestimmt werden muss, von dem die Ansicht stammt. Die Funktion, die dies für den Knoten sauber macht, ist -
function pgc_preprocess(&$variables) {
$node = $variables['node'];
if ($node->type == "event") {
$variables['event_class'] = '';
$num_trainers = $node->field_number_of_trainers[0]['value'];
$count = count($node->field_trainer);
if($count < $num_trainers) {
$variables['event_class'] = 'red';
} else {
$variables['event_class'] = 'green';
}
return $variables;
}
}
Der Punkt dabei ist, ein Ereignis farblich zu kennzeichnen, bei dem sich nicht genügend Leute angemeldet haben. Auf der Titelseite wird eine Liste der Ereignisse angezeigt, die auch farblich gekennzeichnet sein müssen. Ich hoffe wirklich, dass es eine einfache Lösung in der Art von -
function pgc_preprocess_views_view_unformatted(&$variables) {
// Magic here, preferably having something to
// do with the function I already wrote.
}
Nur <?php print $event_class ?>
in die Ansicht .tpl fallen zu lassen, reicht nicht aus.
Antworten:
Ich weiß nicht, ob es hübsch ist. Ich weiß nicht, wie es funktioniert. Aber es funktioniert.
BEARBEITEN (02-01-2012): Nachdem ich nun ein weiteres Jahr mit Drupal zusammengearbeitet habe, hätte ich versucht, einen anderen Weg zu finden, als dies in
node_load()
jeder Zeile der Ansicht zu tun .quelle
Ihre Lösung ist großartig! Um sicherzustellen, dass die Klassen wirklich zu den Ansichtszeilenklassen hinzugefügt werden, sollten Sie sie hinzufügen
nach
Und die Vorverarbeitungsfunktion wird sein:
}}
quelle