Dans ma série "j'ai développé" plein de trucs mais j'ai pas encore eu le temps de les partager", voici l'un des N modules qu'il faut que je vous présente.

Au départ, l'idée est de pouvoir présenter au vos utilisateurs, les dernières vidéos qui ont été mises en ligne par une chaine Youtube. Une fois votre module installé, vous spécifiez dans votre console d'administration la référence de la chaine Youtube que vous voulez "suivre" et affectez le module à l'endroit où vous voulez.

Dans la console d'administration, vous avez 3 paramètres propres au module (je ne parle pas des paramètre d'affectation Joomla) obligatoires à renseigner :

  • l'identifiant de la chaine Youtube à suivre
  • La clef API que vous avez demandé à Youtube
  • Le nombre maximal de résultats que vous voulez afficher

Une fois cette config effectuée, affectez le module comme bon vous semble et voila, c'est déjà fini. La présentation est facilement modifiable via les CSS mais je n'ai rien fourni dans le CSS. Comme à ma mauvaise habitude (enfin ce module date de l'époque où je l'ignorais), la présentation est (encore) dans le helper. N'hésitez pas à modifier le code si besoin.

index.html

<html> 
<head> 
</head> 
<body> 
</body> 
</html> 

helper.php

<?php
	class instagramlastdata{
		public static function getLastDatas($params){
			$url = 'https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId='.$params->get("IDChaine").'&maxResults='.$params->get("maxresults").'&key='.$params->get("APIKey");
			$JSONapiData = @file_get_contents($url); 
			$JSONDecoded = json_decode($JSONapiData, true);
			echo '<div style="width:560px;height:315px;overflow-y:scroll;">';
			foreach ($JSONDecoded["items"] as $video){
				echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/'.$video["id"]["videoId"].'" title="'.$video["snippet"]["description"].'" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
			}
			echo '</div>';	
		}
	}
?>

mod_youtubelastmovies.php

<?php	
	defined('_JEXEC') or die;
	require_once dirname(__FILE__).'/helper.php';
	$hello = instagramlastdata::getLastDatas($params);
	require JModuleHelper::getLayoutPath('mod_cssclock');

mod_youtubelastmovies.xml

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
<name>Youtube Last Movies</name>
<author>sebastien lhuillier</author>
<version>1.0.0</version>
<description>Module affichant les dernières vidéos d'une chaine youtube.</description>
	<files>
		<filename>mod_youtubelastmovies.xml</filename>
		<filename module = "mod_youtubelastmovies">mod_youtubelastmovies.php</filename>
		<filename>index.html</filename>
		<filename>helper.php</filename>
		<filename>tmpl/default.php</filename>
	</files>
	<config> 
		<fields name="params">
			<fieldset name="basic">
				<field required="1" name="IDChaine" type="text" description="ID de la chaine youtube"></field>
				<field required="1" name="APIKey" type="text" description="Clef API Youtube"></field>
				<field required="1" name="maxresults" type="text" description="Nombre de resultas maxi"></field>
				
			</fieldset>
		</fields>
	</config> 
</extension>

style.css

(prévu mais fichier vide)

tmpl/default.php

<?php
defined('_JEXEC') or die;
?>

tmpl/index.html

<html>
<head>
</head>
<body>
</body>
</html>