Afficher les Timestamps d'une vidéo sur Webflow

Découvrez dans ce tuto d'experts les 6 étapes pour afficher les timestamps d'une vidéo dans webflow.

Blog
Astuces
Afficher les Timestamps d'une vidéo sur Webflow

Voici les 6 étapes clés pour ajouter des timestamps

  1. Créer un container et lui ajouter la classe "container"
  2. Ajouter un bloc list et y ajouter une List item
  3. Ajouter un lien et lui mettre comme class "hacks rich text"
  4. Ajouter le bloc video et y insérer votre vidéo
  5. Renseigner la durée de chaque timestamps
  6. Importer dans votre code custom

1 - Créer un container

Etape 1

Sur votre page, ajouter un bloc container et lui attribuer comme class "container".

2 - Ajouter un bloc List

Etape 2

Dans votre container, vous devez ajouter un bloc List.

3 - Ajouter un lien dans chaque List item

Etape 3

Dans chaque item de la liste, ajouter la class "hacks rich text" et insérer y insérer un lien.

4 - Ajouter le bloc vidéo

Etape 4

Dans votre container, ajouter un bloc vidéo et y insérer l'adresse où votre vidéo est hébergée.

5 - Renseigner la durée de chaque partie de votre vidéo

Etape 5

Une fois la structure de votre container achevée, ajouter la durée de chaque partie de votre vidéo dans chaque list item. Vous devez respecter ce format de temps "01:02".

6 - Importer le script dans le custom code

Etape 6

Pour faire fonctionner tout cela, il ne vous reste plus qu'a importer avant la fermeture de votre balise </body>, le script ci dessous dans votre code custom.

<script>
// inject the youtube api script
$('<script src="https://www.youtube.com/iframe_api">').insertBefore($('script')[0]);
 
// setup the onYouTubeIframeAPIReady function
// this is the function called by the youtube api once it's ready
function onYouTubeIframeAPIReady() {
 // loop through all the iframes on the page  
 $('iframe').each((i, frame) => { // for each iframe
   // get the src
   let src = $(frame).attr('src');
   // skip the iframe if it's not a youtube video
   if(!src.includes('youtube')) return;        
   // check if there's a pre-existing query string in the src
   // to determine how to embed the enablejsapi=1 param
   let enablejsapi = src.includes('?') ? '&enablejsapi=1' : '?enablejsapi=1';
   // embed the enablejsapi=1 param
   src = `${src + enablejsapi}`;
   // set the new src as the iframe's src
   $(frame).attr('src', src);
   // create a unique id for the iframe
   $(frame).attr('id','dynamic'+i);
   // call the createPlayer function with the iframe's id
   createPlayer(frame.id);
 });
}

// setup the createPlayer function
function createPlayer(iframe){
 // initialize YT.player with the specified iframe's id
 let player = new YT.Player(iframe, {
   // setup the event function to be called when YT.player is ready
   events: {
     onReady: onPlayerReady
   }
 });
 
 // setup the onPlayerReady function
 function onPlayerReady(event) {
   // when each timestamp is clicked
   $(`#${iframe}`).closest('.container').find('.hacks-rich-text a').click(function(e){    
     // stop default browser action
     e.preventDefault();
     // get the timestamp's text & split at the ':'
     // this will result in an array with the minutes value & the seconds value
     let timestamp = $(this).text().trim().split(':');
     // declare & initialize seconds at 0
     let seconds = 0;
     // if the minutes value exists
     if(Number(timestamp[0])){
       // multiply the value by 60 to get seconds
       // then add it to the seconds variable
       seconds += Number(timestamp[0]) * 60;
     }
     // if the seconds value exists
     if(Number(timestamp[1])){
       // add it to the seconds variable
       seconds += Number(timestamp[1]);
     }
     // play the video at the specified seconds
     player.seekTo(seconds);
   });
 }
}
</script>

Un projet ?
Devis Gratuit
Gabin Touitou