[PLUGINS 5.1] Galerie Vidéo

Bonjour à tous,

J'utilise Pluxml depuis peu, et pour mes besoins personnels j'ai créé une galerie vidéo inspiré de EasyGallery et basée sur "JW Player".

Pour la mettre en place il faut télécharger ces 2 fichiers:
plx.video.zip => http://www.mediafire.com/?vq7097bo52n85mz
mediaplayer.zip => http://www.mediafire.com/?c73yaei3szfbkn0

Dezipper le contenu de plx.video.zip dans le répertoire "plugins" de pluxml.
Dezipper le contenu de mediaplayer.zip à la racine de pluxml.

Ensuite il faut créer un repertoire videos dans le répertoire "data" de pluxml et placez-y vos vidéos en mp4 ou flv (il y a d'autres formats compatibles ==> la liste complète ICI).

Pour finir il faut créer une page statique avec le code suivant:
<?php if(!defined('PLX_ROOT')) exit;
include(PLX_ROOT.'/plugins/plx.videos.php'); # On Ajoute les videos
?>
et voilà, l'installation est finie :)

La galerie est paramétrable dans le fichier "plx.videos.php" qui se trouve dans plugins via les variables suivantes:

Défini le chemin ou se trouve les vidéos
$root_dir = PLX_ROOT.'data/videos';
Défini le chemin ou se trouve JW Player
$mediaplayer = PLX_ROOT.'mediaplayer';
Défini la taille des vignettes
$thumbSiz = 100;
Défini l'image utilisée pour les vignettes
$thumbImg = PLX_ROOT.'plugins/video.png';
Défini un tableau contenant la liste des extensions compatibles avec le lecteur
$filetypes = array("flv", "mp4", "FLV", "MP4");
Et voilà, si jamais vous avez des questions ou des suggestions ce sera avec plaisir.

Mehdi

Réponses

  • amazing !
    bravo :)

    je vais tester ça de ce pas, moi qui était en train de faire mumuse avec easygallery pour l'adapter aussi aux vidéos :)
    peut-on classer les vidéos par catégorie (sous-dossier de data/videos) ?

    enjoy
  • Pour le moment je fais juste un scan des fichiers flv et mp4 qui sont directement sous "videos" mais c'est pas très compliqué de rajouter les dossiers.
  • Salut,

    Je suis en train de réfléchir à une façon de transformer tout ce code en plugin pour la version 5.1 de pluxml, du coup je pensais créer un plugin galerie photo et un autre galerie video. Par contre j'ai l'impression que pour l'instant je ne pourrai pas faire un plugin rapide à installer sans avoir à créer une page statique.
    Est-ce qu'il y a un moyen de le faire? çà serait bien aussi qu'il soit indépendant du theme utilisé...

    Si quelqu'un a une idée là dessus çà serait sympa :) merci

    Mehdi
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour mehdi

    Alors oui il y a la solution pour ne pas être obligé de créer une page statique.
    En gros on peut:
    1) rajouter un menu dans la barre des menus du site
    2) avoir la page qui va bien (page appartenant au plugin) qui s'affiche quand on clique sur le menu

    Et tout ça grâce aux plugins... sans avoir à coder quoi que ce soit dans les themes

    Je ne donne pas la solution ici car il me faut un peu plus de temps pour expliquer la méthode et rédiger la procédure. Mais pour info donc, pas d'inquiétude c'est faisable sans souci. Je prépare un tuto ce week end et je le publierai sur le blog.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Salut!

    C'est bon j'ai réussi à ajouter un menu dynamiquement via le plugin par contre je ne vois pas trop comment je peux afficher une page PHP inclue dans le plugin via ce nouveau menu :(
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour mehdi

    Désolé je n'ai pas eu le temps de rédiger un tuto et ça ne sera pas pour tout de suite.
    En revanche voici une trame qui devrait te permettre d'avancer.

    J'utilise 3 hooks:
    - plxShowStaticListEnd: permet d'insérer un menu dans la barres des menus de pages statiques apres le 1er menu
    - plxMotorPreChauffageBegin: si l'url du site est du type index.php?demo on définit un nouveau mode, que j'ai appelé demo (au mêtre titre que les modes existants de PluXml: home, article, static, etc...). La page qui sera affichée quand on clique sur le menu demo est située dans '../../plugins/demo/theme/mapage.php'.
    if(\$this->get AND preg_match('/^demo\/?/',\$this->get,\$capture)) {
    				\$this->mode = 'demo';
    				\$this->cible = '';
    				\$this->template = '../../plugins/demo/theme/mapage.php';
    				return true;
    			}
    
    - plxMotorDemarrageBegin: ici le code avec les traitements à faire
    # partie contribution
    			if(\$this->mode=='demo') {
    				# ici traitement de la page perso
    				return true;
    			}
    
    Voilà le code complet de la classe demo
    <?php
    class demo extends plxPlugin {
    
    	public function __construct($default_lang) {
    
    		# appel du constructeur de la classe plxPlugin (obligatoire)
    		parent::__construct($default_lang);
    
    		# déclaration des hooks
    		$this->addHook('plxMotorPreChauffageBegin', 'plxMotorPreChauffageBegin');
    		$this->addHook('plxMotorDemarrageBegin', 'plxMotorDemarrageBegin');
    		$this->addHook('plxShowStaticListEnd', 'plxShowStaticListEnd');
    
    	}
    
    	/* 
    	 * Traitement du hook plxShowStaticListEnd
    	 */
    	public function plxShowStaticListEnd() {
    
    		# ajout du menu Demo dans la barre des menus des pages statiques, après le 1er menu
    		echo "<?php array_splice(\$menus, 1, 0, '<li><a id=\"link_demo\" href=\"'.\$this->plxMotor->urlRewrite('?demo').'\">Demo</a></li>'); ?>";
    
    	}
    
    	/* 
    	 * Traitement du hook plxMotorPreChauffageBegin
    	 */
    	public function plxMotorPreChauffageBegin() {
    		$string = <<<END
    		<?php
    
    			# page d'accueil de la partie demo
    			if(\$this->get AND preg_match('/^demo\/?/',\$this->get,\$capture)) {
    				\$this->mode = 'demo';
    				\$this->cible = '';
    				\$this->template = '../../plugins/demo/theme/mapage.php';
    				return true;
    			}
    
    		?>
    END;
    			echo $string;
    	}
    
    	/* 
    	 * Traitement du hook plxMotorDemarrageBegin
    	 */
    	public function plxMotorDemarrageBegin() {
    				
    		$string = <<<END
    		<?php
    
    			# partie demo
    			if(\$this->mode=='demo') {
    				# ici traitement de la page perso
    				return true;
    			}
    			
    		?>
    END;
    			echo $string;
    	}
    }
    ?>
    
    On a ici un mode de fonctionnement similaire à ce qui se fait dans la classe plxMotor

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • ok j'en prend note :)

    merci stephane
  • je viens de tester j'ai un petit soucis, dans chrome il m'affiche une page d'erreur => ERR_CONTENT_DECODING_FAILED
  • J'ai reussi à regler le pb mais maintenant qd je clique sur le lien je me retrouve sur une page qui correspond à ce que j'ai ds ma page php du plugin mais il n'y a que le code de cette page qui a été executé, on dirait que çà a quitté PLUXML, pourtant ce n'est pas le cas vu que j'ai mi le code suivant au debut du fichier
    if(!defined('PLX_ROOT')) exit;
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    Voilà a quoi doit ressembler ta page
    <?php include('themes/'.$plxShow->plxMotor->style.'/header.php'); # On insere le header ?>
    <div id="page">
    	<div id="content">
    		<h2>Page personnelle</h2>
    		<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
    	</div>
    	<?php include('themes/'.$plxShow->plxMotor->style.'/sidebar.php'); # On insere la sidebar ?>
    </div>
    <?php include('themes/'.$plxShow->plxMotor->style.'/footer.php'); # On insere le footer ?>
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • je verrai bien un système avec des champs pour mettre des renseignements sur la vidéo en plus (création d'un fichier xml par vidéo par exemple)
    ca me botterai bien ;)
Connectez-vous ou Inscrivez-vous pour répondre.