Installation
Il s’installe comme n’importe quel plugin.
Il nécessite SPIP 2.0 minimum et CFG, et assez de place étant donné qu’on duplique les documents.
Les zip seront créés dans le dossier local/cache-zip.
Le plugin permet de choisir la méthode de zippage à utiliser :
- PclZip : La librairie php pour créer les zip (fonctionnera partout, méthode par défaut)
- Zip : le plugin utilisera le programme(binaire) zip pour créer l’archive (nécessite l’installation de zip sur le serveur)
- 7-zip : utilisera 7-zip (installation nécessaire)
Vous pouvez configurer la méthode par défaut dans l’interface privé Configuration—>CFG —>Zippeur .
Utilisation simple : le zip des documents joints à un article
Le plugin définit un modèle zip_doc_article qui permet de ziper les documents d’un article.
Dans le texte d’un article
Dans un article, appelez le modèle zip_doc_article de la manière suivante :
L’appel du modèle renvoie un lien vers le zip.
où xx est l’id de l’article.
Avec cette méthode vous contrôlez les articles pour lesquelles vous proposez un zip.
Vous pouvez forcer la méthode à utiliser pour zipper vos documents en ajoutant :
XXX peut prendre comme valeur : PclZip , zip ou 7zip
Dans un squelette
Dans le squelette article.htmlou dans contenu/article.html si vous utilisez un squelette de type "Z", mettez
- [(#MODELE{zip_doc_article}{id_article})]
Le zip sera proposé pour tout les articles qui possèdent des documents (que ces derniers soient en mode image ou document).
Vous pouvez passer un argument {mode=image} ou {mode=document} pour spécifier le mode... En l’absence d’argument mode le modèle prend les documents quelque soit le mode.
Vous pouvez aussi passer un argument {cmd=xxx} pour choisir la méthode (PclZip, zip ou 7zip). En l’absence de cmd, le modèle utilisera celui par défaut.
Usage avancé : zip sur mesure
Le plugin définit un filtre zippeur, qui s’applique sur un tableau (#ARRAY) contenant la liste des fichiers. Il retourne l’URL (relative) du zip.
[(touSlesdocs|zippeur{unedate,LaMethode,unnomdefichier})]
L’argument unedate doit être une date formatée en SQL. En effet pour éviter de recalculer à chaque fois le zip (ce qui prendrait du temps), le plugin stocke en base de donnée le nom du zip associé à une date. Si la date passée en argument diffère de la date en base de donnée, le plugin recalcule le zip.
L’argument LaMethode doit être PclZip,zip ou 7zip. si vous la laissez vide, le filtre utilisera celle de la configuration
L’argument unnomdefichier (facultatif) peut-être le nom du fichier zip, sans l’extension. En l’absence de cet argument, le plugin en génére un à partir du contenu du tableau fournit en premier argument.
Exemple : je veux faire un zip de tous les fichiers présents sur le site.
- [(#REM)<!-- On remplis un tableau avec les chemins de fichiers-->]
- #SET{doc,#ARRAY}
- <BOUCLE_doc(DOCUMENTS){tout}>
- [(#SET{doc,#GET{doc}|push{#FICHIER|copie_locale}})]
- [(#REM) ne pas oublier le copie_locale, sinon le zip ne contiendra pas les fichiers distant ]
- </BOUCLE_doc>
- [(#REM) On génére le zip en donnant comme date la dernière modification d'un document]
- <BOUCLE_zip(DOCUMENTS){tout}{0,1}{!par maj}>
- <a href="[(#GET{doc}|zippeur{#MAJ,,toutlesdoc})]">Tout les docs</a>
- </BOUCLE_zip>
- </B_doc>
Limites (attention pour SPIPeur avancé)
Il peut arriver que pour des fichiers très lourds (par exemple plus de 300 Mo) le serveur n’arrive pas à compresser. Pour le moment le plugin n’intégre pas automatiquement de « taille limite » avant essaie de zippage.
Si vous êtes dans la possibilité d’avoir des fichiers lourds avec un serveur qui ne suivrait pas — et cela dépend de votre serveur —il faudrait que vous fassiez vous même le test dans les boucles.
Pour ce faire vous pouvez utiliser le critère somme de SPIP-Bonux afin de faire un test conditionnel.
Vous aurez moins de problème si vous utilisez zip ou 7zip sur les gros fichiers.
Pour les webmestre : fichiers de log
Zippeur génére deux fichiers de logs spécifiques, dans le dossier tmp :
- zippeur.log : à chaque fois qu’un zip est généré, son nom est rajouté.
- zippeur_erreur.log : il peut arriver qu’un zip ne se fabriquent pas exactement comme souhaité. Ce fichier contient les erreurs pclzip qui peuvent se produire. Pour les fichiers générés via zip et 7zip, le code de sortie sera affiché (un nombre) ; je vous invite à regarder le manuel du binaire pour connaitre ces codes.



zippeur.zip
Vos commentaires
# Le 7 janvier à 22:53, par The Marauder
En réponse à : Zippeur
Bonsoir,
Je souhaiterais rendre cette fonction active uniquement à partir du moment ou un article dispose de plus d’un document mais je ne vois pas comment faire ?
Merci :)
# Le 7 janvier à 22:57, par Maïeul
En réponse à : Zippeur
quelle fonction ? comment insérer vous le zip ?
# Le 7 janvier à 23:16, par The Marauder
En réponse à : Zippeur
Désolé de ne pas avoir été clair :
J’ai inséré ceci
Dans mon squelette article.html afin de pouvoir télécharger des documents zippés. Seulement, je souhaiterais que la possibilité de télécharger du document zippé ne soit effective que si l’article contient au moins 2 documents. Donc si un article ne contient qu’un seul document, je ne souhaite pas que soit proposé de zipper celui-ci.
# Le 7 janvier à 23:21, par Maïeul
En réponse à : Zippeur
Il faut conditionner l’affichage de
[(#MODELE{zip_doc_article}{id_article})].Une manière simple de le faire est la suivante :
[(#TOTAL_BOUCLE|>{1}|oui)
[(#MODELE{zip_doc_article}{id_article})]
]
<//B_totdocuments>
Voir la documentation sur les filtres de tests et sur partie laternative des boucles pour plus d’infos
# Le 8 janvier à 00:12, par The Marauder
En réponse à : Zippeur
Merci, j’y suis presque !
J’ai du virer des trucs que tu as mis sur le code que tu m’a proposé. J’ai pas compris comment ils ont pu arriver la.
Par contre, si il détecte bien n+x documents, il affiche aussi n+x fois le lien pour télécharger le zip ^^
Je vais voir du coté des filtres de test et alternative des boucles.
# Le 8 janvier à 01:06, par Maïeul
En réponse à : Zippeur
heu bizarre là. Tu a mis où cette boucle ?
tu peux me mettre le code complet ?
bonne nuit
++
# Le 8 janvier à 01:31, par The Marauder
En réponse à : Zippeur
J’ai placé cela dans BOUCLE_contenu_article du skel contenu/article.html de zpip.
Bonne nuit à toi et merci pour ton aide
# Le 8 janvier à 14:10, par Maïeul
En réponse à : Zippeur
ce n’est pas la boucle que j’ai mise.
Je reprend :
l. 1 : une boucle totodocuments autofermante, qui n’affiche rien.
l. 5 : fin de la partie alternative. Tout ce qu’il y a entre
<\BOUCLE...>et<\\B...>est executé si la boucle ne retourne rien. C’est le cas ici.l. 2 : on test si le la BOUCLE a un nombre d’itération supérieur à 1.
l. 3. Si c’est le cas, on affiche le modele de zip
# Le 8 janvier à 21:50, par The Marauder
En réponse à : Zippeur
J’avais (cru ?) pourtant mis ce code au départ avant de tester à « ma facon » ...
En tout cas, maintenant ça fonctionne, merci encore :)
# Le 8 janvier à 21:51, par Maïeul
En réponse à : Zippeur
de rien... il y a tjr des choses qu’on croit faire et qu’on fait pas :-)
Répondre à ce message
# Le 24 décembre 2011 à 11:23, par rcaron
En réponse à : Zippeur
Bonjour et merci pour ce plugin
Deux bricoles :
1) Plugin Zippeur bien installé, pourtant dans la liste des plugins, j’ai le message « Installation du plugin Zippeur Echec » en haut de la liste. Grave ? Pourtant ça fonctionne...
2) Lorsque je clique sur « En savoir plus » dans la liste des plugins... Erreur de redirection vers la page de spip-contrib.
Encore Merci
# Le 24 décembre 2011 à 13:25, par Maïeul
En réponse à : Zippeur
merci de me relancer sur le sujet après le 1er janvier, je suis en ce moment en vacances
# Le 26 décembre 2011 à 23:20, par Maïeul
En réponse à : Zippeur
ai trouvé le temps de regarder. C’est corrigé, merci
Répondre à ce message
# Le 1er mars 2011 à 10:41, par Guytarr
En réponse à : Zippeur
Très bon ! Et fonctionne sur 2.3-dev sans soucis (hormis la configuration mais ça ne devrait pas être compliqué d’adapter).
Sans bonux, pour éviter de tenter de zipper des fichiers de plus de 50mo je fais une petite boucle si le plus gros fichier ne dépasse pas 50mo.
Encore bravo pour cet excellent plugin !
# Le 3 mars 2011 à 12:13, par Maïeul
En réponse à : Zippeur
c’est quoi le pb avec la configuration ?
# Le 21 juin 2011 à 02:47, par Guytarr
En réponse à : Zippeur
Normalement il n’y en a plus avec 48964, mais je n’ai pas testé en SPIP 2.0 + cfg, je n’ai essayé qu’en 2.1+cfg et 3.
N’hésite pas à me dire si certaines modifs ne te conviennent pas. Merci encore pour ce plugin qui est très très pratique !
# Le 21 juin 2011 à 10:10, par Maïeul
En réponse à : Zippeur
on verra, j’ai plus de 2.0, donc on va attendre qu’une personne poste un méchant commentaires :-)
par contre je suis d’avis de ne pas mettre de borne supérieur dans plugin.xml car rien n’exclus que le plugins soit compatible spip 3.1, donc je préfére laisser l’intervalle ouvert
j’ai testé hier soir sur SPIP 3 et j’ai pas eu besoin de modifier le plugin.xml. C’est quoi cette nouvelle pipeline « déclarer_table_principale » ? c’est indispensable ?
# Le 21 juin 2011 à 16:26, par Guytarr
En réponse à : Zippeur
oui, j’ai corrigé la borne supérieur, Eric m’a demandé de mettre l’étoile (pris en charge par spip3 uniquement, mais avec la double déclaration ça passe.)
La double déclaration dans plugin.xml c’est pour éviter de forcer l’installation de CFG. Mais dans le cas présent on pourrait imaginer avoir une unique déclaration car même en 2/2.1 le plugin peut être configuré soit par bonux, soit par CFG (donc on pourrait mettre utilise à la place de necessite, et faire une unique declaration pour spip du 2 au 3). Plusieurs plugins font cela, mais c’est vrai qu’il n’y a pas de « bonne solution ». Les utilisateurs qui n’ont ni l’un ni l’autre serait pénalisés mais ça peut s’indiquer dans la documentation du plugin. Je ne l’ai pas fait car je ne voulais pas trop "bousculer" le fonctionnement actuel du plugin, ça relève du choix des auteurs.
Pour le pipeline declarer_table_principale, il y était déjà, je n’ai rien ajouté. Il sert à la déclaration de la table principale de zippeur, je crois que c’est tout.
Désolé pour les oublis et merci pour tes corrections matinales.
# Le 21 juin 2011 à 16:30, par Maïeul
En réponse à : Zippeur
oui pour la pipeline c’est moi qui suis fatigué :)
pour la double déclaration, ce n’est pas très grave. Au grottes je migrerais vers le paquet.xml
Répondre à ce message
# Le 1er avril 2011 à 13:11, par rcaron
En réponse à : Zippeur
Bonjour,
Est-il possible d’avoir un zip contenant les fichiers avec le titre du document et non avec le nom initial du fichier ?
Merci
# Le 1er avril 2011 à 17:49, par Maïeul
En réponse à : Zippeur
pour le moment rien n’est prévu pour le permettre et je suis pas très chaud pour le coder : nombreux pb.
Entre autres : gestions des extensions, des accents, des espaces, des tailles de noms.
# Le 1er avril 2011 à 19:03, par bigoudi
En réponse à : Zippeur
effectivement, les gens peuvent mettre n’importe quoi en titre de documents.
De plus il faudrait renommer les fichiers avant le zippage, sans toucher au nom en local.
Pourquoi ne pas leurs donner le bon nom dés le départ ? ^^
Répondre à ce message
# Le 15 janvier 2011 à 20:46, par rcaron
En réponse à : Zippeur
Problème :
Message dans la partie privée :
Warning : filesize() [function.filesize] : stat failed for ../local/cache-zip/article_470.zip in /.../ecrire/public/composer.php(49) : eval()’d code on line 80
Warning : filesize() [function.filesize] : stat failed for ../local/cache-zip/article_470.zip in /.../ecrire/public/composer.php(49) : eval()’d code on line 91
Warning : filesize() [function.filesize] : stat failed for ../local/cache-zip/article_470.zip in /.../ecrire/public/composer.php(49) : eval()’d code on line 101
Qu’est-ce qui ne va pas ?
Merci
Robert
# Le 13 février 2011 à 21:00, par Maïeul
En réponse à : Zippeur
un bug :)
en fait une histoire de chemin.
La version 0.5 corrige ce problème … ainsi que d’autres en terme de performance
Répondre à ce message
# Le 9 septembre 2010 à 09:43, par Mat.
En réponse à : Zippeur
Salut,
Moi aussi j’attendais ce plugin depuis longtemps.
Malheureusement, ça ne fonctionne pas sur un site hébergé chez Free.
Voici le message d’erreur :
vérifier les droits d’écriture
Le système a rencontré une erreur lors de l’écriture du fichier _DIR_SITElocal//.ok. Veuillez, en tant qu’administrateur du site, vérifier les droits d’écriture sur le répertoire _DIR_SITElocal.
Je n’arrive pas à le régler.
Merci d’avance pour votre aide.
# Le 9 septembre 2010 à 10:41, par Maïeul
En réponse à : Zippeur
l’origine du problème est connue.
pouvez vous tester ceci : remplace _DIR_SITE dans les fichier du plugin par _DIR_RACINE ?
Il va falloir patienter un peu car je n’ai pas accés à SVN pour le moment.
# Le 9 septembre 2010 à 11:39, par Mat.
En réponse à : Zippeur
Merci, ça fonctionne maintenant.
J’aurai tout de même une dernière requête, Je voudrai resserrer le fichier zip uniquement sur les images (jpg,png...).
Voici ce que j’ai mis sur ma page article mais ça ne fonctionne pas :
Il prend tous les documents en compte dans le zip.
Voir cette page par exemple : http://pmbc1.free.fr/spip.php?article240
Merci d’avance !!
# Le 9 septembre 2010 à 11:57, par Maïeul
En réponse à : Zippeur
modifiez le fichier modeles/zip_doc_articles.html du plugin :
{extension ?}comme critère de chacune des 2 boucles ;
# Le 9 septembre 2010 à 11:59, par Maïeul
En réponse à : Zippeur
et vider le dossier local/cache-zip
# Le 9 septembre 2010 à 12:59, par Mat.
En réponse à : Zippeur
Malgré plusieurs tests, ça ne marche pas.
J’ai donc uniquement rajouté
à la 1ere boucle du fichier modèle et mis
dans mon article et là ça fonctionne parfaitement.
# Le 9 septembre 2010 à 13:42, par Maïeul
En réponse à : Zippeur
effectivement j’ai répondu un peu vite, cela ne pouvait marcher.
En revanche :
- je vous conseil fortement de copier ce fichier dans le dossier modeles de votre dossiers squelettes. Sinon vous perdrez la modifications lors de la mise à jour du plugin.
- je vous conseil également de mettre ce critère sur la deuxième boucle pour éviter des pépins en cas de mise à jour des images.
# Le 9 septembre 2010 à 13:52, par Mat.
En réponse à : Zippeur
Ok, merci pour les conseils.
En tous cas, ce plugin me rend bien service.
Merci encore !!
# Le 10 septembre 2010 à 00:09, par Maïeul
En réponse à : Zippeur
pourriez vous testez (à partir de 1 h) la nouvelle version que j’ai mise en ligne ce soir ?
elle devrait résoudre le premier problème
merci
# Le 20 septembre 2010 à 12:46, par Mat.
En réponse à : Zippeur
Cette version résous le 1er pb.
Merci.
Répondre à ce message
# Le 8 septembre 2010 à 23:16, par Mathieu Drouet (IZO)
En réponse à : Zippeur
Ah génial ^^ . Depuis que j’attends ça
# Le 8 septembre 2010 à 23:17, par Maïeul
En réponse à : Zippeur
hihi, je me demandais si cela servirai.
Hésite pas à rapporter des soucis éventuels (j’ai pas testé en production)
Répondre à ce message