Fork me on GitHub




(1) 2 »


[Astuce] Intégrer un player Flash MP3 automatique dans MyDownload
Régulier
Inscrit: 26/01/2004 16:16
De seraing
Messages: 253
Depuis 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

Tout d'abord, il faut bien sur copier le fichier .SWF du player dans le répertoire modules/mydownload, et vous pouvez le créer depuis le site Alsacreations.

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=<{$down.homepage}>" 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=<{$file.url}>" 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=<{$down.homepage}>" 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 ;)

Posté le : 29/11/2007 12:09
Partager Twitter Partagez cette article sur GG+
Re: [Astuce] Intégrer un player Flash MP3 automatique dans MyDownload
Semi pro
Inscrit: 12/03/2006 17:12
De Besançon
Messages: 906
Feliçitation Cyborgjeff, c'est bien le genre de petit plus qui fait la forçe de Xoops. Pour avoir dejà utiliser le mini player d'Alsa Creation, je vais utiliser de nouveau ta methode.

Posté le : 30/11/2007 11:25

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: [Astuce] Intégrer un player Flash MP3 automatique dans MyDownload
Semi pro
Inscrit: 12/03/2006 17:12
De Besançon
Messages: 906
Feliçitation Cyborgjeff, c'est bien le genre de petit plus qui fait la forçe de Xoops. Pour avoir dejà utiliser le mini player d'Alsa Creation, je vais utiliser de nouveau ta methode.

Posté le : 30/11/2007 11:27

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: [Astuce] Intégrer un player Flash MP3 automatique dans MyDownload
Régulier
Inscrit: 26/01/2004 16:16
De seraing
Messages: 253
je constate qu'il y a un petit oubli pour le fonctionnement sour FF, il faut également modifier un 2° endroit dans la balise <object> pour appeler le fichier flash et MP3,.. je corrige donc le code de mon post plus haut !

Posté le : 30/11/2007 11:39
Partager Twitter Partagez cette article sur GG+
Re: [Astuce] Intégrer un player Flash MP3 automatique dans MyDownload
Xoops accro
Inscrit: 04/02/2003 01:54
De Le Mans
Messages: 12273
Pour ceux qui ne l'auraient pas remarqué, j'ai agrafé ce sujet afin qu'il soit facilement accessible. C'est à dire qu'il apparaît dans un espace séparé du forum "espaces modules".

Posté le : 30/11/2007 14:26
Partager Twitter Partagez cette article sur GG+
Re: [Astuce] Intégrer un player Flash MP3 automatique dans MyDownload
Régulier
Inscrit: 26/01/2004 16:16
De seraing
Messages: 253
merci Christian,.. j'espère qu'il pourra inspirer bon nombre d'utilisateur ;)

Je dois mnt m'attaquer à faire qqch de similaire pour le module News, et surtout trouver une astuce qui permettrait au module RSSFit d'interpréter cet ajout de fichier MP3 et l'intégrer dans le Flux RSS en structurant le fichier "XML" généré comme Podcast...

Cela permettra alors à Xoops d'avoir une réél solution de podcasting !! ;)

Posté le : 30/11/2007 19:52
Partager Twitter Partagez cette article sur GG+
Re: [Astuce] Intégrer un player Flash MP3 automatique dans MyDownload
Newbie
Inscrit: 19/12/2007 14:39
Messages: 12
j fai ça , mai sans resultat :(:(

voila le lien http://safirap.net/modules/mydownloads/viewcat.php?cid=51

tu pe poser le fichier template pour voir comment ça marche
merçi !!

Posté le : 23/12/2007 12:24
Partager Twitter Partagez cette article sur GG+
Re: [Astuce] Intégrer un player Flash MP3 automatique dans MyDownload
Régulier
Inscrit: 26/01/2004 16:16
De seraing
Messages: 253
doit y avoir un couile dans ton truc.. car tu devrais avoir au moins le player qui s'affiche! meme s'il ne fonctionne pas !

bon je vais chercher après mon template

Posté le : 23/12/2007 16:45
Partager Twitter Partagez cette article sur GG+
Re: [Astuce] Intégrer un player Flash MP3 automatique dans MyDownload
Newbie
Inscrit: 19/12/2007 14:39
Messages: 12
oui , merçi comme meme :)
voila msn c safirap.net at gmail.com
merçi

Posté le : 29/12/2007 10:44
Partager Twitter Partagez cette article sur GG+
Re: [Astuce] Intégrer un player Flash MP3 automatique dans MyDownload
Semi pro
Inscrit: 04/10/2007 04:40
De Cuges Les Pins
Messages: 843
Bravo et félicitations Cyborgjeff !!...

Pour m'a part j'avais abandonner et opter pour le module webshow.

Je crois bien que je vais faire marche arrière et utiliser cette modif. que tu propose. :)

Enfin, encore bravo, et merci. ;)

iLuc

Posté le : 28/04/2008 22:04
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

72 Personne(s) en ligne (55 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 72 | Plus ...