Il semble que SPIP 1.9.2 ne fournisse pas d’outil donnant l’extension d’un fichier. Oui, avec une boucle sur le type de document, on trouve l’#EXTENSION
, mais avec un filtre, on économise une requête SQL pour une information qu’on connait déjà, ou presque :
Filtre |extension
Voici un filtre qui, appliqué à la balise #FICHIER
dans une boucle (DOCUMENTS)
, donnera l’information nécessaire et suffisante :
<?php
function extension($fichier){
//Si je trouve un point vers la fin du nom de fichier, je renvoie ce qui suit
if (preg_match(',\.([^\.]+)$,', $fichier, $regs))
return $regs[1];
//Sinon, je ne renvoie rien, il n'y a pas d'extension.
return '';
}
?>
En effet, la balise #FICHIER
contient l’extension, on peut donc l’en extraire.
Comme tous les filtres, il sera à copier/coller dans un fichier mes_fonctions.php
. Vous pourrez ensuite employer cette notation dans vos squelettes : [(#FICHIER|extension)]
, pour afficher l’extension de fichier.
Par exemple, pour afficher, non pas la miniature de prévisualisation des documents visuels, mais leur icône de fichier, dont SPIP fournit une belle collection dans le répertoire dist/vignettes/
, on utilisera ce filtre de la manière suivante :
[<img src="(#CHEMIN{[vignettes/(#FICHIER|extension).png]})" class="spip_logos" />]
Balise #EXTENSION
Comme nous ne sommes pas pingre, on vous offre maintenant la balise #EXTENSION
:
<?php
function balise_EXTENSION($p){
//recuperer le champ fichier dans la table de la base de donnees
$_fichier = champ_sql('fichier', $p);
//calculer l'extension du fichier en question
$p->code = "extension($_fichier)";
return $p;
}
?>
Ainsi, le code suivant produira le même effet :
[<img src="(#CHEMIN{[vignettes/(#EXTENSION).png]})" class="spip_logos" />]
L’avantage, c’est que quand vous passerez à SPIP 1.9.3, vous n’aurez pas à modifier vos squelettes et vous pourrez, si vous le souhaiter, supprimer les deux fonctions, pour un résultat identique.
Exemple de boucle
<B_documents_joints>
<div id="documents_joints">
<h2><:titre_documents_joints:></h2>
<ul>
<BOUCLE_documents_joints(DOCUMENTS) {mode=document}{id_article} {!par date}{par titre, type_document, taille}>
<li>
[<a href="#URL_DOCUMENT"><img src="(#CHEMIN{vignettes/[(#FICHIER|extension)].png})"[ alt="(#FICHIER|extension)"] class="spip_logos" /></a>]
[<p class="titre">(#TITRE|sinon{[(#FICHIER)]})</p>]
[<p class="descriptif">(#DESCRIPTIF|PtoBR)</p>]
<p class="info_document"><:info_document:> #TYPE_DOCUMENT [(<strong>.(#FICHIER|extension)</strong>)][(#LARGEUR|?{[ - (#LARGEUR)[ x (#HAUTEUR) pixels]],''})][ - <strong>(#TAILLE|taille_en_octets)</strong>][ - (#DATE|affdate{d/m/y}).] <a href="#URL_DOCUMENT"><:bouton_telecharger:></a></p>
</li>
</BOUCLE_documents_joints>
</ul>
</div>
</B_documents_joints>
Le filtre |extension était nécessaire dans cette boucle qui a servi à réaliser l’« Espace Presse » du site de la Fédération Française d’Orthodontie, qui met des fichiers haute définition à disposition, pour les journaleux de la presse papier.
Aucune discussion
Ajouter un commentaire
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.
Suivre les commentaires : |