Google Analytics can track more than just page views! Here's a simple Drupal module that records an event when a visitor rates content with Fivestar.
/** * @file * Records a google analytics event when a fivestar rating is made. */ Drupal.behaviors.fivestarGA = function(context) { $('.fivestar-widget .star', context).click(function() { $form = $(this).parents('form'); var contentPath = $("[name=content_path]", $form).val(); var rating = $(this).parent().find('.star').index(this) + 1; _gaq.push(['_trackEvent', 'Rating', rating + ' star', contentPath]); }); };
<?php
/**
* Fivestar / Google Analytics integration.
*/
/**
* Implements hook_form_alter().
*/
function fivestar_ga_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'fivestar_custom_widget' ||
strstr($form_id, 'fivestar_form_node_')) {
// Store the content path in the rating form.
// This will be used later as an identifier for the event.
if ($form['content_type']['#value'] == 'node') {
$content_path = drupal_get_path_alias('node/' .
$form['content_id']['#value']);
$form['content_path'] = array(
'#type' => 'hidden',
'#value' => $content_path,
);
}
}
}
/**
* Implements hook_init().
*/
function fivestar_ga_init() {
if (user_access('rate content')) {
drupal_add_js(drupal_get_path('module', 'fivestar_ga') .
'/fivestar_ga.js');
}
}