En este tutorial vamos explicar como dar solución al error que muestra el sistema de calificaciones (rating) de Virtuemart, al colocarlo dentro de una Pestaña (TABS) de Bootstrap; por lo que asumimos que usted ya implemento Bootstrap con el sistema de Pestañas (Tabs) dentro de tu plantilla Joomla.
El sistema de calificación de Virtuemart se basa en 5 estrellas y los muestra de forma plana y trabaja de forma correcta, pero como ya dije si colocas el sistema de calificaciones y votaciones dentro de una pestaña al pasar el ratón (Mouse) sobre las estrellas para elegir la cantidad a calificar, esta se incrementa de forma indefinida como veremos en la siguiente imagen.
Este es un problema de JS en el archivo llamado default_reviews.php, si revisamos la consola de errores de nuestro navegador no nos mostrara nada, pero aquí le mostramos el trozo de código del problema.
jQuery(function($) {
var steps = ".$maxrating.";
var parentPos= $('.rating .ratingbox').position();
var boxWidth = $('.rating .ratingbox').width();// nbr of total pixels
var starSize = (boxWidth/steps);
var ratingboxPos= $('.rating .ratingbox').offset();
jQuery('.rating .ratingbox').mousemove( function(e){
var span = jQuery(this).children();
var dif = e.pageX-ratingboxPos.left; // nbr of pixels
difRatio = Math.floor(dif/boxWidth* steps )+1; //step
span.width(difRatio*starSize);
$('#vote').val(difRatio);
//console.log('note = ',parentPos, boxWidth, ratingboxPos);
});
});
Para solucionar este error solo tenemos que copiar el archivo de /components/com_virtuemart/views/productdetails/tmpl/default_reviews.php a /templates/TU_TEMPLATE/html/com_virtuemart/productdetails/default_reviews.php y ordenar el código de la siguiente manera:
jQuery(function($) {
jQuery('.rating .ratingbox').mousemove( function(e){
var steps = ".$maxrating.";
var parentPos= $('.rating .ratingbox').position();
var boxWidth = $('.rating .ratingbox').width();// nbr of total pixels
var starSize = (boxWidth/steps);
var ratingboxPos= $('.rating .ratingbox').offset();
var span = jQuery(this).children();
var dif = e.pageX-ratingboxPos.left; // nbr of pixels
difRatio = Math.floor(dif/boxWidth* steps )+1; //step
span.width(difRatio*starSize);
$('#vote').val(difRatio);
//console.log('note = ',parentPos, boxWidth, ratingboxPos);
});
});
Con esto ya funcionará de forma correcta, como lo muestra la siguiente imagen.
Te Sirvio? dale like y comparte