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!