Je sais qu'il existe des plugins pour cet utilitaire d'intégration de son Soundcloud, je sais qu'on peut aussi faire des copier-coller des données générées par Soundcloud lui-même mais pour une et une seule musique, mais je n'avais jamais encore trouvé la solution d'intégrer des listes complètes ou plutôt des playlists fournies par Soundcloud.
C'est tout à fait l'objet de ce petit plugin. Il vous permet de récupérer une playlist de Soundcloud, et de la passerr entre les deux tags {soundcloudlist} et {/soundcloudlist}
Le code retourné par le plugin n'est ni plus ni moins une reconstitution du code généré par Soundcloud qui vous donne lorsque vous copiez-collez votre intégration.
Dans les paramètres de ce plugin, j'ai integré les paramètres que Soundcloud peut prendre en compte.. Le plugin gère ainsi tous les paramètres qu'un code d'intégration Soundcloud génère et que j'ai décortiqué par rétro ingénierie. Même s'il sont tous techniquement fonctionnels, peut etre que les traduction que j'ai faites dans les libellés de la configuration sont à mieux traduire (j'attends vos propositions)
Bien entendu, comme le plugin s'applique à tout votre site internet, l'ensemble de ces paramètres seront appliqués à l'ensemble des intégrations de votre plugin.
soundcloud.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="1.0" type="plugin" group="content">
<name>Soundcloud</name>
<author>Sebastien LHUILLIER</author>
<creationDate>Septembre 2022</creationDate>
<copyright>Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.</authorEmail>
<authorUrl>www.sebastien-lhuillier.com</authorUrl>
<version>1.0</version>
<description>Ce plugin permet d'intégrer un soundcloud</description>
<files>
<filename plugin="soundcloud">soundcloud.php</filename>
<filename>soundcloud.xml</filename>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field name="autoplay" type="radio" default="false" label="La liste est se charge t elle automatiquement ?" description="Aide">
<option value="false">Non</option>
<option value="true">Oui</option>
</field>
<field name="couleur_lecteur" type="color" default="#eee" format="rgba" label="Couleur du lecteur" description="Couleur du lecteur" />
<field name="hide_related" type="radio" default="false" label="Masquer les elements relatif" description="">
<option value="false">Non</option>
<option value="true">Oui</option>
</field>
<field name="show_comments" type="radio" default="0" label="Afficher les commentaires" description="">
<option value="false">Non</option>
<option value="true">Oui</option>
</field>
<field name="show_users" type="radio" default="0" label="Afficher les utilisateurs" description="">
<option value="false">Non</option>
<option value="true">Oui</option>
</field>
<field name="show_reposts" type="radio" default="0" label="Afficher les repost" description="">
<option value="false">Non</option>
<option value="true">Oui</option>
</field>
<field name="show_teaser" type="radio" default="0" label="Afficher les teasers" description="">
<option value="false">Non</option>
<option value="true">Oui</option>
</field>
<field name="visual" type="radio" default="0" label="Afficher les visual" description="">
<option value="false">Non</option>
<option value="true">Oui</option>
</field>
</fieldset>
</fields>
</config>
</extension>
soundcloud.php
<?php
//fichier [joomla]/plugings/content/soundcloud/soundcloud.php
defined('_JEXEC') or die('Access deny');
class plgContentSoundcloud extends JPlugin
{
function onContentPrepare($content, $article, $params, $limit){
preg_match_all('/{soundcloudlist}(.*?){\/soundcloudlist}/is', $article->text, $matches);
//print_r($matches);
foreach($matches[1] as $ligne)
{
echo '<iframe width="100%" height="300" scrolling="yes" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/playlists/'.$ligne.'&color=%23'.$this->params->get('couleur_lecteur', '').'&auto_play='.$this->params->get('autoplay', '').'&hide_related='.$this->params->get('hide_related', '').'&show_comments='.$this->params->get('show_comments', '').'&show_user='.$this->params->get('show_users', '').'&show_reposts='.$this->params->get('show_reposts', '').'&show_teaser='.$this->params->get('show_teaser', '').'&visual='.$this->params->get('visual', '').'"></iframe>';
echo '<div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"></div>';
}
//On vire les tag de l'article
$article->text = preg_replace('/{soundcloudlist}(.*){\/soundcloudlist}/i', '', $article->text);
}
}