Drupal FiveStar模块投票限制

时间:2014-04-03 07:21:04

标签: drupal drupal-fivestar

我正在使用FiveStar投票模块,我想对用户可以投票的数量加上限制。有谁知道怎么做?

2 个答案:

答案 0 :(得分:0)

function YOURMODULENAME_print_rating($nid, $fivestar_widget) {
  $path = drupal_get_path('module', 'fivestar');
  drupal_add_js($path . '/js/fivestar.js');
  drupal_add_css($path . '/css/fivestar.css');
  $voting_message = '';
  $output = '';
  $is_login = user_is_logged_in();
  $rating = votingapi_select_single_result_value(array(
   'entity_id' => $nid,
   'entity_type' => 'node',
   'tag' => 'vote',
   'function' => 'average',
  ));
  if ($is_login) { 
    if (isset($rating)) {
      $voting_message = "<div>You have already rated this.</div>";
      $output = theme('fivestar_static', array('rating' => $rating, 'stars' => 5, 'tag' => 'vote')) . $voting_message;
    }
    else {
      $output = render($fivestar_widget);
    }
  }
  else {
    $fivestar_links = l('Login', 'user/login') . ' or ' . l('Register', 'user/register');
    $voting_message = "<div>Only registered user can rate this content type.<br/>$fivestar_links to rate this content type.</div>";
    $output = theme('fivestar_static', array('rating' => $rating, 'stars' => 5, 'tag' => 'vote')) . $voting_message;
  }
  return $output;
}

你可以尝试使用这个自定义模块,或类似的东西,它正在检查用户是否被投票。将以下代码添加到节点模板文件中:

hide($content['field_fivestar_rating']);// This line will hide the stars which are coming from the fivestar module.
print YOURMODULENAME_print_rating($node->nid, $content['field_fivestar_rating']);// This will print the fivestar.

答案 1 :(得分:0)

五星模块使用投票API。投票API有一个配置页面,专门允许您在没有任何其他干预(如自定义模块)的情况下执行此操作。您可以设置在计算机(对于匿名用户)和(单独)注册用户身份可以被视为不同之前必须经过的时间。在此时间以下,不允许重复投票。每种情况下的时间可以在“立即”和“从不”之间设置。