Player MP3 automatique dans mon site Xoops

Player MP3 automatique dans mon site Xoops

dewplayerDepuis longtemps j’avais rêvé dans mon site Xoops cyborgjeff.com pouvoir proposer un player MP3 en streaming… Il y a peu, j’avais trouvé la possibilité de pouvoir intégrer DewPlayer (un mini player flash) dans le contenu de chaque items « musique », mais il fallait faire cela de manière manuel en insérant le code HTML… Ce qui n’aide pas vraiment à faire avancer le chmilblick, ni a rendre autonome mon site.

Mais début de semaine, la question d’un autre utilisateur de Xoops qui tentait de faire pareil m’a incité à me lancer dans le projet de rendre automatique cet ajout,.. et avec toutes les « nouvelles connaissances » acquises sur le tripatouillage de code PHP Xoops… je me sentais en forme ;)

Objectif : Automatiser l’affichage d’un player MP3 flash dans la page de descriptions du module Mydownload de mon site.

1. Détecter si l’URL du lien est une extension .MP3 ou .mp3, si oui alors afficher le player cilbant vers cet URL

2. Si ce n’est pas le cas, détecter si l’URL du champs « Homepage » (que je renomerais streaming) est un fichier .MP3 ou .mp3, si oui alors afficher le player ciblant vers cet URL

3. si aucun des 2 cas n’est remplis, alors ne rien afficher

Le premier point pose déjà un soucis important, en effet, Dewplayer doit absolument recevoir un paramètre cilbant une adresse .MP3, hors le module de Xoops ne renvoit hors de ses variables pré-définies (smarty) qu’une URL en fichier .PHP?argument=x&argument2=y qui traitera ensuite la requête. Par facilité donc, j’avais pensé à récupérer la valeur du champs « homepage« , lui défini correctement, mais cela demandait quand même de ré-éditer mes 500 items ;(

Donc, il me fallait tout d’abord créer une nouvelle variable Smarty qui correspondrait à l’URL du téléchargement encodé dans la DB, pour ce faire, il m’a fallu éditer le fichier Singlefile.php

J’y trouve une ligne qui commence par : $xoopsTpl->assign(‘file’, array(‘id’ => $lid, … Cela m’inspirerait donc bien l’instantiation de la variable smarty <{$files}>… de part le xoopsTpl qui pourrait faire référence au Template dans lequel ces variables seront utilisées… J’ai donc ajouté à la liste des élements du tableau de cette variable un : ‘url’ => $url

Bingo, le débuggeur m’affiche bien le contenu de cette variable correspondant à mon URL exacte !

Je peux donc appeler mon fichier MP3 en lui passant comme variable soit la variable <{$files.url}> soit <{$down.homepage}> en ajoutant le code d’appel du player Flash dans mon le fichier de template mydownloads_download.html.

<object type="application/x-shockwave-flash" data="dewplayer.swf?mp3=votre_son.mp3" width="200" height="20">
<param name="movie" value="dewplayer.swf?mp3=<{$down.homepage}>" /> 
<param name="wmode" value="transparent"> </object>

Voilà.. déjà comme cela, on peut avoir un player automatique qui jouera le fichier ciblé par la variable choisie,… et qui ne jouera rien du tout si l’URL ne renvoit pas de fichier MP3.

Mais bon,.. moi tant qu’à faire, j’aurais préféré pousser un peu plus et pouvoir prendre le « Homepage » si URL n’était pas intéressant (vu que je cible aussi des fichiers de type soundtracker .IT, .XM, .S3M,…) afin d’avoir une alternative pour un preview,.. et tant qu’à faire, qu’il n’affiche rien s’il n’y pas de raison de jouer qqch…

Là.. il va falloir jouer avec du code Javascript pour traiter les chaines de caractères, d’une part car je ne sais pas le faire en PHP et de toute manière, pas de PHP dans les templates… donc, je vais devoir préparer quelques lignes de codes en début de page (!! pas de déclaration de fonctions dans les templates !!)

<script language="JavaScript">
 var chaineurl="<{$file.url}>";
 long=chaineurl.length;
 slong=parseInt(long);
 slong=slong-3;
 result=chaineurl.substring(slong,long);
 var chainestream="<{$down.homepage}>";
 long=chainestream.length;
 slong=parseInt(long);
 slong=slong-3;
 result2=chainestream.substring(slong,long);
 </script>

En gros je récupère la variable en Javascript, je calcule la longueur de celle-ci, je formate le résultat en valeur numérique, je fais une soustraction pour connaitre la longeur totale -3 et je récupère les 3 dernières lettres de mon URL (MP3 en théorie), je fais ensuite pareil pour la 2° variable à traiter.

Ensuite, il faut utiliser un petit script d’affichage conditionnel du player à insérer à l’endroit voulu dans le template,.. vu que l’on va utiliser la fonction document.write, il faut évidemment jouer avec les \ devant les «  »

<script>
 if (result=="mp3"||result=="MP3"){
 document.write('<object type=\"application/x-shockwave-flash\" data=\"dewplayer.swf?mp3=votre_son.mp3\" 
width=\"200\" height=\"20\">
<param name=\"movie\" value=\"dewplayer.swf?mp3=<{$file.url}>\"/>
<param name=\"wmode\" value=\"transparent\">
</object>');
 }
 else {
 if (result2=="mp3"||result=="MP3"){
 document.write('<object type=\"application/x-shockwave-flash\" 
data=\"dewplayer.swf?mp3=votre_son.mp3\" width=\"200\" height=\"20\">
<param name=\"movie\" value=\"dewplayer.swf?mp3=<{$down.homepage}>\"/>
<param name=\"wmode\" value=\"transparent\"></object>');
 }
 else {}
 }</script>

Eh voilà ;)

Alors Pype,.. ca t’en bouche un coin que ton grand frangin face lui ausis de la programmation hein ;)

 

Vous aimerez aussi
Cubic Dream and Calvin’s desire
Cubic Dream and Calvin’s desire

1983, un Commodore 64 débarque à la maison, j'ai 6 ans ! C64 - Music Processor, (Lire la suite)

ChatGPT pour adapter un plugin WordPress
ChatGPT pour adapter un plugin WordPress

Waouw, je suis impressionné ! J'avais déjà lu qu'il était assez facile de pouvoir s'aider de ChatGPT pour créer du (Lire la suite)

Google Analytic 4, on chamboule tout !
Google Analytic 4, on chamboule tout !

Ah les statistiques de visite des sites web, c'est un truc qui m'a toujours passionné ! J'avais bien sur mon (Lire la suite)

One thought on “Player MP3 automatique dans mon site Xoops

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.