J'ai en fait atteint le bas de Google en essayant de comprendre comment ajouter une classe CSS à chaque ligne d'une vue. L'astuce est que j'ai besoin que la classe de chaque ligne soit déterminée dynamiquement en fonction de certaines données du nœud à partir desquelles la vue est extraite. La fonction qui réussit parfaitement pour le nœud est -
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;
}
}
Le but est de coder par couleur un événement qui n'a pas eu suffisamment de gens inscrits. Il y aura une liste d'événements sur la première page, et j'ai besoin qu'ils soient également codés par couleur. J'espère vraiment qu'il y aura une solution simple dans le sens de -
function pgc_preprocess_views_view_unformatted(&$variables) {
// Magic here, preferably having something to
// do with the function I already wrote.
}
Le <?php print $event_class ?>
simple fait de laisser tomber la vue .tpl ne le fait pas.
Réponses:
Je ne sais pas si c'est joli. Je ne sais pas comment cela fonctionne. Mais ça marche.
EDIT (02-01-2012): après avoir travaillé avec Drupal pendant une autre année maintenant, j'aurais essayé de trouver un autre moyen de le faire en plus de courir
node_load()
sur chaque ligne de la vue.la source
votre solution est super! Pour vous assurer que les classes seront vraiment ajoutées aux classes de lignes vues, vous devez ajouter
après
Et la fonction de prétraitement sera:
}
la source