Table of contents
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.

Discussions par date d’activité
Une discussion
Pour un document distant ça peut ne pas marcher, par exemple http://rezo.net/ est du .html
bah pourquoi tu dis ça ? Je viens d’essayer et ça marche.
Reply to this message
Ajouter un commentaire
Follow the comments:
|
