Я фактически достиг дна Google, пытаясь выяснить, как добавить класс CSS в каждую строку представления. Хитрость в том, что мне нужно, чтобы класс для каждой строки определялся динамически на основе некоторых данных из узла, из которого извлекается представление. Функция, которая выполняет это аккуратно для узла -
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;
}
}
Смысл этого в том, чтобы раскрасить код события, на которое не было достаточно подписчиков. На первой странице будет список событий, и мне нужно, чтобы они также были выделены цветом. Я действительно надеюсь, что есть какое-то простое решение по линии -
function pgc_preprocess_views_view_unformatted(&$variables) {
// Magic here, preferably having something to
// do with the function I already wrote.
}
Просто падение <?php print $event_class ?>
в представлении .tpl не делает этого.
Ответы:
Не знаю, если это красиво. Не знаю, как это работает. Но это работает.
РЕДАКТИРОВАТЬ (02-01-2012): после работы с Drupal в течение еще одного года, я бы попытался найти какой-то другой способ сделать это, кроме запуска
node_load()
в каждой строке представления.источник
Ваше решение отличное! Чтобы убедиться, что классы действительно будут добавлены в классы строк представлений, вы должны добавить
после
И функция предварительной обработки будет:
}
источник