Drupal: Fivestar Блок с осью голосования - PullRequest
1 голос
/ 20 января 2010

Я использую Fivestar 1.19 с осью голосования. Я полагаю, что стандартная пятизвездочная функция block / fivestar использует только стандартный тег голосования

fivestar_widget_form ($ узел)

Мне нужно передать свой пользовательский пятизвездочный тег в функцию.

Попытка следовать ответу ниже: Для меня $ object - это $ node.

  <?php 
function custom_fivestar_widget ($object) {
  global $user;

  $star_display = variable_get('fivestar_style_'. $object->type, 'average');
  $text_display = variable_get('fivestar_text_'. $object->type, 'dual');

  if ($star_display == 'average' && ($text_display == 'average' || $text_display == 'none')) {
    // Save a query and don't retrieve the user vote unnecessarily.
    $votes = fivestar_get_votes($object->type, $object->nid, 'score', 0);
  }
  else {
    $votes = fivestar_get_votes($object->type, $object->nid);
  }

  $values = array(
    'user' => isset($votes['user']['value']) ? $votes['user']['value'] : 0,
    'average' => isset($votes['average']['value']) ? $votes['average']['value'] : 0,
    'count' => isset($votes['count']['value']) ? $votes['count']['value'] : 0,
  );

  $settings = array(
    'stars' => variable_get('fivestar_stars_'. $object->type, 10),
    'allow_clear' => variable_get('fivestar_unvote_'. $object->type, FALSE),
    'style' => $star_display,
    'text' => $text_display,
    'content_type' => $object->type,
    'content_id' => $object->nid,
    'tag' => 'score',
    'autosubmit' => TRUE,
    'title' => variable_get('fivestar_title_'. $object->type, 1) ? NULL : FALSE,
    'feedback_enable' => variable_get('fivestar_feedback_'. $object->type, 1),
    'labels_enable' => variable_get('fivestar_labels_enable_'. $object->type, 1),
    'labels' => variable_get('fivestar_labels_'. $object->type, array()),
  );

  return fivestar_custom_widget($form_state, $values, $settings);
}

print drupal_get_form('custom_fivestar_widget', $object);

?>

Это печатает мне виджет, я полагаю, используя мой счет. Однако текстовое отображение все неправильно, как и средняя оценка. И это дает всем постоянные 10 звезд. (

1 Ответ

0 голосов
/ 20 января 2010

Вы можете воспроизвести функцию fivestar_form в fivestar.module. Смотрите там переменную $ settings.
Так что просто скопируйте внутреннюю часть этой функции, удалите проверку некоторых переменных и установите вручную некоторые переменные. В массиве $ settings установите значение «tag» как хотите.

...