SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Administration > Documents

|extension du #FICHIER

dimanche 21 octobre 2007, par James, romy.tetue.net. Dernier ajout mardi 30 octobre 2007


Un nouveau filtre pour connaitre l’extension d’un fichier


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

  1.  
  2. <B_documents_joints>
  3. <div id="documents_joints">
  4.         <h2><:titre_documents_joints:></h2>
  5.         <ul>
  6.                 <BOUCLE_documents_joints(DOCUMENTS) {mode=document}{id_article} {!par date}{par titre, type_document, taille}>
  7.                 <li>
  8.                         [<a href="#URL_DOCUMENT"><img src="(#CHEMIN{vignettes/[(#FICHIER|extension)].png})"[ alt="(#FICHIER|extension)"] class="spip_logos" /></a>]
  9.                         [<p class="titre">(#TITRE|sinon{[(#FICHIER)]})</p>]
  10.                         [<p class="descriptif">(#DESCRIPTIF|PtoBR)</p>]
  11.                         <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>
  12.                 </li>
  13.                 </BOUCLE_documents_joints>
  14.         </ul>
  15. </div>
  16. </B_documents_joints>
  17.  

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.

Détail de l'« Espace presse » du site de la FFO, octobre 2007.


Répondre à cet article



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et vie SPIP-Contrib | SPIP | L'autre.net