Oggi vediamo come risolvere un fastidioso problema legato al noto plugin testimonials widget. L’errore si ha quando al caricamento della pagina vengono visualizzati tutti i testimonial anzichè solo il primo. Vediamo come risolvere questo bug.
Il plugin è molto ben fatto, pronto per essere tradotto in più lingue anche da backend, e permette un controllo diretto di tutti i nostri testimonials. Ovviamente può essere modificato a seconda delle vostre esigenze. La cosa che ho trovato più bella di questo plugin è proprio il backend: ha un codice molto pulito e permette un rapido sviluppo e aggiunta di sezioni.
Purtroppo però a volte (almeno a me è capitato) al caricamento del widget nel front end vengono visualizzati tutti i testimonial anzichè solo il primo. Una volta ciclati correttamente tutti i testimonial il plugin funziona correttamente, ma il bug rimane molto fastidioso e può rendere poco usabile il tutto.
Ecco come procedere per risolvere il bug.
Risoluzione del problema
file da aprire: testimonials-widget.php
Panoramica del codice incriminato:
<script type="text/javascript">
function nextTestimonial$widget_number() {
if (!jQuery('.$id_base').first().hasClass('hovered')) {
var active = jQuery('.$id_base .testimonialswidget_active');
var next = (jQuery('.$id_base .testimonialswidget_active').next().length > 0) ? jQuery('.$id_base .testimonialswidget_active').next() : jQuery('.$id_base .testimonialswidget_testimonial:first');
active.fadeOut(1250, function(){
active.removeClass('testimonialswidget_active');
next.fadeIn(500);
next.addClass('testimonialswidget_active');
});
}
}
jQuery(document).ready(function(){
jQuery('.$id_base').hover(function() { jQuery(this).addClass('hovered') }, function() { jQuery(this).removeClass('hovered') });
setInterval('nextTestimonial$widget_number()', $refresh_interval * 1000);
});
</script>
Codice da aggiungere:
jQuery('.testimonialswidget_testimonial').hide(); //elimina tutti i testimonial
jQuery('.testimonialswidget_testimonial:first').show(); //fai apparire solo il primo
Vedi i commenti per maggiori info.
Risultato finale delle modifica
<script type="text/javascript">
function nextTestimonial$widget_number() {
if (!jQuery('.$id_base').first().hasClass('hovered')) {
var active = jQuery('.$id_base .testimonialswidget_active');
var next = (jQuery('.$id_base .testimonialswidget_active').next().length > 0) ? jQuery('.$id_base .testimonialswidget_active').next() : jQuery('.$id_base .testimonialswidget_testimonial:first');
active.fadeOut(1250, function(){
active.removeClass('testimonialswidget_active');
next.fadeIn(500);
next.addClass('testimonialswidget_active');
});
}
}
jQuery(document).ready(function(){
jQuery('.testimonialswidget_testimonial').hide();
jQuery('.testimonialswidget_testimonial:first').show();
jQuery('.$id_base').hover(function() { jQuery(this).addClass('hovered') }, function() { jQuery(this).removeClass('hovered') });
setInterval('nextTestimonial$widget_number()', $refresh_interval * 1000);
});
</script>
Spero sia utile a chi usa questo plugin, enjoy!






