diff --git a/fivestar.module b/fivestar.module index 1b9db2c..82f4b5d 100644 --- a/fivestar.module +++ b/fivestar.module @@ -60,6 +60,9 @@ function fivestar_microdata_suggestions() { 'average_rating' => array( '#itemprop' => array('ratingValue'), ), + 'rating_count' => array( + '#itemprop' => array('ratingCount'), + ), ); return $mappings; diff --git a/includes/fivestar.field.inc b/includes/fivestar.field.inc index 53cda56..671b719 100644 --- a/includes/fivestar.field.inc +++ b/includes/fivestar.field.inc @@ -727,6 +727,11 @@ function fivestar_property_info_callback(&$info, $entity_type, $field, $instance 'type' => 'text', 'microdata' => TRUE, ), + 'rating_count' => array( + 'label' => t('Rating count'), + 'type' => 'text', + 'microdata' => TRUE, + ), ); } diff --git a/includes/fivestar.theme.inc b/includes/fivestar.theme.inc index 24b0ef6..d0334ec 100644 --- a/includes/fivestar.theme.inc +++ b/includes/fivestar.theme.inc @@ -245,6 +245,7 @@ function theme_fivestar_summary($variables) { $output = ''; $div_class = ''; $average_rating_microdata = ''; + $rating_count_microdata = ''; if (isset($user_rating)) { $div_class = isset($votes) ? 'user-count' : 'user'; $user_stars = round(($user_rating * $stars) / 100, 1); @@ -266,17 +267,25 @@ function theme_fivestar_summary($variables) { $div_class = 'combo'; } - if (isset($votes) && !(isset($user_rating) || isset($average_rating))) { - $output .= ' '. format_plural($votes, '@count vote', '@count votes') .''; - $div_class = 'count'; - } - elseif (isset($votes)) { - $output .= ' ('. format_plural($votes, '@count vote', '@count votes') .')'; - } - if ($votes === 0) { $output = ''. t('No votes yet') .''; } + elseif (isset($votes)) { + if (!empty($microdata['rating_count']['#attributes'])) { + $rating_count_microdata = drupal_attributes($microdata['rating_count']['#attributes']); + } + // We don't directly substitute $votes (i.e. use '@count') in format_plural, + // because it has a span around it which is not translatable. + $votes_str = format_plural($votes, '!cnt vote', '!cnt votes', array( + '!cnt' => '' . intval($votes) . '')); + if (isset($user_rating) || isset($average_rating)) { + $output .= ' (' . $votes_str . ')'; + } + else { + $output .= ' ' . $votes_str . ''; + $div_class = 'count'; + } + } $output = '
'. $output .'
'; return $output;