lien de téléchargement d'image

Bonjour,

j'ai mis en place un système de galerie d'image avec redimensionnement automatique de photo HD. L'idée étant de présenter des photos HD à télécharger. J'ai bien mes miniatures ainsi que mes liens vers les images HD du dossier médias mais le lien cliqué affiche le .jpg en grand dans le navigateur, je voudrais que cette image soit automatiquement téléchargée comme un zip dans le dossier de téléchargement et non affichée. avez vous une idée ?

Aussi, je souhaite ne charger qu'un seul élément dans le dossier média/image afin que la miniature soit créée à partir de cette photo HD et réduire au maximum les actions dans le back office.

de la simplicité en fait. Est ce possible d'encapsuler à la voler mon fichier .jpg dans un .zip ou puis-je détourner la fonction "?telechargement" de la partie "document" de pluxml ?

Merci par avance

Réponses

  • StéphaneStéphane Membre, Ancien responsable de PluXml
    Salut

    pour le zip, si ton hebergeur à la librairie zip d'installé ça sera facile. Faut utiliser les fonctions de cette librairie pour zipper à la volée.
    sinon il faudra passer par un script php

    donc l'idée est que lorsque tu clic sur une image, ça appelle un script avec en parametre le nom de l'image pour zipper dans un dossier par défaut et apres envoyer le fichier à l'utilisateur (voir fonction de telechargement de PluXml)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • oui c'est un peu ça, c'est l'idée qui me vient comme ça mais si il est possible de faire différemment je suis preneur. Et la fonction intégrée de pluxml pour le téléchargement ne ferait-elle pas l'affaire si détournée pour mon usage ? Si oui comment faire ?

    j'aime beaucoup ta, légendaire, grande réactivité Stéphane, merci ;)
  • StéphaneStéphane Membre, Ancien responsable de PluXml
    Oui effectivement tu peux adapter la fonction de téléchargement pour zipper au début de la fonction et après passer par le code de pluxml en donnant le bon nom de fichier à envoyer à l'utilisateur

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • bon alors comment dire, le principe, je le comprends bien mais la réalisation c'est tout à fait autre chose pour moi. Crois tu que tu puisses me donner des pistes sur le code en lui même ?
  • StéphaneStéphane Membre, Ancien responsable de PluXml
    Je t'ai fais ça sous forme de plugin. Je lui ai donné le joli nom de plxMyZipDownload :)

    Donc déjà pour récuperer le plugin c'est ici

    Pour l'utiliser il faut suivre ces règles:

    1) les fichiers sont à stocker dans le dossier images de PluXml (par défaut: data/images/)
    2) Dans un article il faut ajouter et formater les liens de la façon suivante:

    <a href="?download=file1.jpg">telecharger</a>
    <a href="?download=dossier/file2.jpg">telecharger</a>

    Lorsqu'on cliquera sur 1 des 2 liens, cela zippera le fichier data/images/file1.jpg ou data/images/dossier/file2.jpg et ça l'enverra à l'utilisateur.

    Bon c'est du béta, ce qui veut dire peut etre bug(s), mais aussi ouvert à toutes suggestions pour l'améliorer et en faire un plugin plus robuste.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • octobre 2011 modifié
    mortel, quel rapidité. je vais tester ça très très vite. Merci encore et je te tiens au courant.

    MAJ : excellent, ça marche à merveille. Merci 1000 fois pour ce plugin génial. je l'ai intégré à ma classe galerie photo et le tout fonctionne dynamiquement. c'est génial. Voila pourquoi j'aime pluxml.
  • StéphaneStéphane Membre, Ancien responsable de PluXml
    ;) et sans aucune modif de PluXml

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • c'est vraiment génial en effet. pour ma part j'ai créé une nouvelle "function" dans le plxShow pour mes galeries d'images auto mais je pourrais mettre cette fonction dans un plugin c'est ça ? Je n'ai pas trop le temps de regarder comment faire mais sur le principe c'est ce que je devrais faire n'est ce pas, afin de pouvoir mettre à jour mon pluxml facilement c'est ça ?
  • StéphaneStéphane Membre, Ancien responsable de PluXml
    Je réponds oui à toutes tes questions.
    Le but est de ne pas modifier les fichiers de pluxml pour pouvoir faire les mises à jour et les montées de versions sans problèmes, sans se soucier de reporter à chaque fois les modifications que tu aurais pu faire.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • octobre 2011 modifié
    ok, bon je vais jeter un oeil rapide pour voir. merci

    bon, j'ai du mal. comment faire pour ajouter un fonction dans plxShow avec un plugin ? en fait c'est la seule chose que je voudrais faire avec pour le moment afin de sortir cette fonction du core.

    Quelle déclaration de hook faire pour injecter du code dans plxShow ? je voudrais créer une nouvelle fonction dans le plxShow et comment l'appeler depuis mon plugin ? Merci par avance.
  • SapinTremblant a écrit:
    Quelle déclaration de hook faire pour injecter du code dans plxShow ? je voudrais créer une nouvelle fonction dans le plxShow et comment l'appeler depuis mon plugin ? Merci par avance.
    éhéhé, ça, ça m’intéresse aussi.
    Me suis cassé les dents sur l'injection de fonction dans la plxShow via un plugin ... en vain.
    je pensais à un hook endplxShow comme pour adminArticleContent etc ... avec la possibilité d'utiliser les fonctions de la-dite class.

    A part une instance de la plxShow dans le plugin, j'ai rien trouvé. J'me trompe ?

    Cordialement,
    _____
    D.San
  • StéphaneStéphane Membre, Ancien responsable de PluXml
    Dans ton thème, là où tu veux voir agir le plugin ajoute une ligne du genre
    <?php $plxShow->callHook('monHook') ?>
    
    dans le plugin
    public function __construct($default_lang) {
    
            # appel du constructeur de la classe plxPlugin (obligatoire)
            parent::__construct($default_lang);
    
    	# droits pour accèder à la page config.php et admin.php du plugin
    	$this->setConfigProfil(PROFIL_ADMIN);
    	$this->setAdminProfil(PROFIL_ADMIN);
    
            # déclaration du hook
    	$this->addHook('monHook', 'monHook');
    	
    }
    
    public function monHook() {
    	
    # ici le code du hook
    	
    }
    
    PluXml a ses propres hooks, mais il sait aussi gérer des hooks utilisateurs. c'est toi qui choisit le nom que tu veux lui donner

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • merci beaucoup pour ces précisions. mais comment faire si ma fonction a elle même des paramètres à renseigner dans différentes pages de mon thème ?

    ma fonction commence comme ça
    function listeimgalbum($dossier, $type){
    
    et je renseigne $dossier et $type différemment dans mon template categorie-phototheque.php ou categorie-lookbook.php et autres.

    Comment renseigner ces paramètres du coup ?
  • danielsandanielsan Membre
    octobre 2011 modifié
    ça te donne quoi en faisant ça:
    ( j'imagine que c'est une fonction de la plxShow ? )
    function listeimgalbum($dossier, $type){
    echo "Le dossier: ".$dossier."<br>\n";
    echo "Le type: ".$type;
    }
    
    et dans ton template:
    <?php $plxShow->listeimgalbum('mondossier','montype'); ?>
    
    j'ai cru comprendre qu'on ne pouvait pas ( pour l'instant :/ ) envoyer des données au plugin ... :(

    Ce qu'il faudrait, c'est une méthode spéciale dans la plxShow du type:
    public function insertionMethode() {
    		eval($this->plxMotor->plxPlugins->callHook('plxShowNewFonction'));
    	}
    
    puis dans le plugin:
    <?php
    class test extends plxPlugin {
    
    		public function __construct($default_lang) {
    			parent::__construct($default_lang);
    
    			$this->addHook('plxShowNewFonction', 'plxShowNewFonction');
    		}
    
    		public function plxShowNewFonction() {
    			echo "function listeimgalbum(\$dossier, \$type){\n";
    			echo "echo \"Le dossier: \".\$dossier.\"<br>\n\";\n";
    			echo "echo \"Le type: \".\$type;\n";
    			echo "}\n";
    		}
    
    	}
    
    ?>
    
    et dans le template:
    <?php $plxShow->listeimgalbum('mondossier','montype'); ?>
    
    une idée comme ça ... :D
  • merci danielsan, je vais regarder mais je ne suis pas sur de pouvoir réaliser ces modif.
  • danielsandanielsan Membre
    octobre 2011 modifié
    te tracasse pas, à part une fonction dans le plxShow, le reste n'est pas prévu pour fonctionner.
Connectez-vous ou Inscrivez-vous pour répondre.