J'ai du mal à ajouter ce carrousel à mon modèle de prestashop.
Cela me renvoie l'erreur suivante:
TypeError: $ (...). OwlCarousel n'est pas une fonction de navigation: true
Et le code utilisé pour l'initialiser est celui-ci
$(document).ready(function() {
$("#owl-demo").owlCarousel({
navigation : true
});
});
J'essaie de le résoudre, mais semble impossible, car sur une page html vide, cela fonctionne mais pas lorsque je l'utilise sur Prestashop.
Un indice?
Merci.
Ajouter owl.carousel.min.js
fichier dans votre page d'accueil et avant le fichier dans lequel vous utilisez ajoutez le code suivant:
$("#owl-demo").owlCarousel({
navigation : true
});
Alors seulement ça marchera.
Vous obtiendrez cette erreur si le fichier jquery se charge après le fichier carrousel de hibou.
(Assurez-vous que votre référence à jquery est au-dessus du fichier js de référence du carrousel de hibou)
Si le chargement des fichiers JavaScript est affecté par une certaine latence, vous pouvez vérifier si la fonction est définie avant de l'appeler.
Vérifiez avec jQuery.isFunction
if($.isFunction('owlCarousel')){
$("#owl-demo").owlCarousel({
navigation : true
});
}
Vérifiez avec opérateur de type JavaScript
if(typeof owlCarousel === 'function') {
$("#owl-demo").owlCarousel({
navigation : true
});
}
Essayez d'utiliser des balises {literal} {/ literal}. Il est généralement recommandé de mettre du javascript dans ces balises dans des fichiers .tpl (smarty). Javascript peut fonctionner sans les balises mais peut parfois renvoyer une erreur (comme dans votre cas)
BR's
La raison pour laquelle html exécutait parfois un script en ligne avant que le script externe ne se charge parfaitement. J'obtiens une solution de cette façon. Je viens d'ajouter l'attribut defer à mon owl.carouselsource
appelant comme ..
<script defer src="plugins/OwlCarousel2.3/owl.carousel.min.js"></script>
Documentation sur l'attribut defer -> att_script_defer-link
Ajoutez votre fichier Jquery et owl.js à la section d'en-tête
J'ai eu le même problème. Ajoutez simplement le fichier js juste au-dessus de votre fonction
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>
<!--DO NOT ENTER ANY EXTERNAL LINK IN BETWEEN-->
<script type="text/javascript">
$(document).ready(function() {
$('.owl-carousel').owlCarousel({
loop: true,
});
});
</script>