Installation
Il s’installe comme n’importe quel plugin.
Il nécessite assez de place étant donné qu’on duplique les documents.
Les zip seront créés dans le dossier local/cache-zip.
Le plugin s’appuie sur les librairies de SPIP pour le Zippage.
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 :
<zip_doc_article|>
L’appel du modèle renvoie un lien vers le zip.
Les documents de l’article courant seront alors zippés.
Avec cette méthode vous contrôlez les articles pour lesquelles vous proposez un zip.
Dans un squelette
Dans le squelette article.html
ou dans contenu/article.html
si vous utilisez un squelette de type “Z”, mettez
[(#MODELE{zip_doc_article}{id_article})]
Le zip sera proposé pour tous 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.
Utilisation simple : le zip des documents d’un album
Depuis la version 3.1, il est possible de zipper les documents d’un album : il suffit d’utiliser le modèle zip_doc_album
. Ce modèle s’utilise de la même manière que le précédent, à l’exception que id_article
est à remplacer par id_album
.
Utilisation simple : lien vers le zip des documents de l’article / de l’album
Depuis la version 4.0, il est possible d’utiliser le raccourcis [texte->zip_doc_articlexxx]
pour pointer vers un zip des document lié à l’article xxx
; de même on peut utiliser [texte->zip_doc_albumxxx]
pour les documents de l’album xxx
.
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,plat,unedureedevie,extension})]
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 vide, il correspond à une ancienne version du plugin qui proposait plusieurs méthodes de zip, ce qui n’est plus le cas.
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.
L’argument plat
vaut 'non'
par défaut. Si 'oui
’, cela évite d’avoir dans le zip produit l’arboresence complète depuis le dossier local
.
L’argument unedureedevie
(facultatif) est apparu avec la version 3 du plugin. Il indique la durée de vie affecté au zip, à compter de la date de zippage. On consultera “Effacer les zip produits par le Zippeur” pour plus de détails.
L’argument extension
, ajouté avec la version 5.1, est l’extension du zip (sans le point). Par défaut il vaut zip
, mais il peut être changé pour par exemple produire un epub
.
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>
Usage très avancé : fabrication d’un ZIP contenant des fichiers issus de squelettes
Depuis la version 2.0, il est possible d’utiliser Zippeur au sein d’un squelette ou d’un plugin pour produire des Zip contenant des fichiers issus de l’interprétation d’un squelette SPIP.
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 essai 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.
Cas où le cache est désactivé
Si le cache de SPIP est désactivé à l’aide de la constante _NO_CACHE, les zip sont recalculés à chaque appel de la commande.
Toutefois si la constante _NO_CACHE_SAUF_ZIPPEUR
est mise à 1, alors le zips seront aussi mis en cache.
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 qui peuvent se produire.
Discussions by date of activity
One discussion
Je ne comprends pas :
Erreur d’exécution ../squelettes/modeles/zip_doc_article.html | File […]/plugins/auto/zippeur/v8.0.0/zippeur_fonctions.php Line 137 : Class “Spip\Archiver\SpipArchiver” not found"
Que faire ?
SPIP 4.2.6 et PHP Version 8.0.30
Il y avait un bug lié au fait que je devellopais sur 5.0 et pas 4.2, et donc l’autoloading des classes n’est pas le même.
La v8.0.1 du plugin, juste envoyée, résoud le problème.
Super ! Merci !
ça marche
Reply to this message
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments: |