Есть галерея, которую должны оценивать судьи и пользователи(оценка "зрительские симпатии"). Соответсвенно, по смыслу, это два блока fivestar, что не предусмотрено этим модулем (буквально вчера, правда, появился dev-билд который умеет). Нашел на этом же форуме вот такой сниплет:
<?php
$nid = arg(1);
$output = '';
$tags = array(
'Rate' => t('Rate'),
'Symphaty' => t('Symphaty'),
);
foreach ($tags as $tag => $title) {
$votes = fivestar_get_votes('node', $nid, $tag);
$values = array(
'user' => isset($votes['user']['value']) ? $votes['user']['value'] : NULL,
'average' => isset($votes['average']['value']) ? $votes['average']['value'] : NULL,
'count' => isset($votes['count']['value']) ? $votes['count']['value'] : NULL,
);
if (user_access('rate content')) {
$settings = array(
'stars' => 10,
'allow_clear' => TRUE,
'style' => 'average',
'text' => 'dual',
'content_type' => 'node',
'content_id' => $nid,
'tag' => $tag,
'autosubmit' => TRUE,
'title' => $title,
'feedback_enable' => TRUE,
'labels_enable' => TRUE,
'labels' => array(t('Poor'), t('Okay'), t('Good'), t('Great'), t('Awesome')),
);
$output .= drupal_get_form('fivestar_custom_widget', $values, $settings);
} else {
$output .= '<div class="fivestar-average-rating" style="font-weight:bold;">' . $title . ':</div>';
$output .= theme_fivestar_static($values['average'], 10, $tag);
$output .= '<div class="description">';
$output .= t('Average rating: %average (%count votes)', array('%average' => $values['average'] / 10, '%count' => $values['count'] ? $values['count'] : 0));
$output .='</div>';
}
}
print $output;
?>
Мне, правда, нужно, чтобы судья не имел права оченивать зрительской симпатией, а обычный юзер соответсвенно, судейской оценкой, но я это решил созданием минимодуля, который добавляет два новых permission и правкой сниплета.
А теперь еще хочется для разных осей - разные картинки (ну, типа, для судейской оценки - звёздочки, а для зрительских симпатий - сердечки). Но функция fivestar_custom_widget - не имеет такой опции, насколько я читаю её код.
Теперь я думаю, как лучше? Хакать код модуля или поступить по индусски? По идусски - это взять css-код виджета, исправить там код класса .star на .star1, захардкодить его в , в $output сделать замену .star на .star1. Это сильно пахнет "говнокодом"?
Комментарии
что то не хочет этот код пахать