SPIP ecureuil




Thème de ce forum :

Afficher le nom réel (+ extension) d’un fichier dans la boucle documents



Alex
Afficher le nom réel (+ extension) d’un fichier dans la boucle documents
16 juillet 2005 17:14

Bonjour,

Je cherche à substituer dans ma boucle DOCUMENTS, le nom réel d’un fichier (ex : nom_fichier.jpg) à la balise #TITRE, dans le cas ou un auteur oublie de légender le document joint.

Il est clair que c’est faisable, puisque les noms des fichiers sont affichés dans l’interface privée de spip, mais je n’ai pas trouvé dans la doc officielle, ni sur les forums le moyen de le faire...

Je ne pense pas être le seul à avoir besoin de cette astuce, spécialement utile pour les galeries de photos.

Une idée ? Merci beaucoup !

Rechercher dans les forums:
 

mortimer
16 juillet 2005 19:19
> Afficher le nom réel (+ extension) d’un fichier dans la boucle documents

c’est le comportement par défaut de la balise #TITRE, si celui ci n’est pas changé, il est égal au nom de fichier.

DoriaN
17 juillet 2005 13:02
Afficher le nom réel (+ extension) d’un fichier dans la boucle documents

probablement que [(#EMBED_DOCUMENT|fichier)] devrait faire l’affaire pour afficher le nom du fichier.

Alex
17 juillet 2005 16:30
> La solution !!

La balise titre n’affiche pas en fait le nom réel du fichier, c’est bien mon problème ! Si le titre n’est pas renseigné dans l’interface privé, la balise #TITRE n’affichera tout simplement rien...

La réponse de Dorian m’a mis sur la piste. Il faut utiliser la balise |filtre, non pas sur #EMBED_DOCUMENT, mais sur #LOGO_DOCUMENT, ce qui subsitue l’adresse au logo. On a alors un nom de fichier du type : IMG/vignettes/monimage.jpg ... pas très joli.

Pour obtenir simplement le nom du fichier, il faut aller modifier le fichier « inc-calcul-outils.php3 » qui se trouve à la racine du site, et remplacer la ligne n°34 :

$r = ereg_replace("^" . _DIR_IMG, "", $on) ;

par :

$r = ereg_replace("^IMG/vignettes/","", $on) ;

en plaçant dans le squelette la balise [(#LOGO_DOCUMENT|fichier)], on affiche ainsi le nom original du fichier avec son extension.

Peut être un peu traficoté, mais c’est la solution la plus simple que je vois...

DoriaN
17 juillet 2005 16:50
> Afficher le nom réel (+ extension) d’un fichier dans la boucle documents

tu ferais mieux de reprendre le filtre |fichier (qui doit être dans ecrire/inc_filtres.php3) et de le modifier pour qu’il fasse ce que tu cherches à faire, créant ainsi un nouveau filtre (dans mes_fonctions.php3), ça t’éviterais de modifier le code de spip.

James
17 juillet 2005 17:14
> Afficher le nom réel (+ extension) d’un fichier dans la boucle documents

J’ai essayé #FICHIER dans une boucle DOCUMENTS et le résultat me convient bien

mortimer
17 juillet 2005 17:22
> Afficher le nom réel (+ extension) d’un fichier dans la boucle documents

Alex, c’est loin d’être une bonne idée de modifier le noyau spip juste pour faire ça.

tu devrais plutôt faire un filtre à applique à la balise #FICHIER qui fait ce que tu veux.

alex
24 juillet 2005 04:43
The end II (le retour)

Exact !

Merci pour vos commentaire. J’utilise donc la balise #FICHIER (que je ne connaissais pas), avec le filtre maison suivant (dans mes_fonctions.php3) :

<?<br>
function 
nomfichier($fichier) { <br>
    
$Rep "(gif|jpg|png)";<br>
    
$Ext "(.gif|.jpg|.png)";<br>
     
$fichier ereg_replace("IMG/$Rep/"""$fichier) ;<br>
     
$fichier ereg_replace("$Ext"""$fichier) ;<br>
    return 
$fichier;<br>
}<
br>
?>

...qui a été très bidouillé sachant que je n’y connais rien en php !!! Mais apparemment ça marche. Si vous voyez des solutions pour épurer ce code.

Il s’utilise donc très simplement à l’intérieur de la boucle document : [(#FICHIER|nomfichier)]

Merci pour votre aide ;)

Léon
12 novembre 2007 15:46
Afficher le nom réel (+ extension) d’un fichier dans la boucle documents

nikel mais sans les
 ;)

c’est quand meme bizarre que de base, il n’y a pas de filtre qui permette d’avoir le nom du fichier avec ou sans l’extension...

Merci pour la fonction, j’en ai profiter pour rajouter qq extensions

// nom du fichier
function nomfichier($fichier) {
        $Rep = "(gif|jpg|png|xls|doc|ppt|pdf|zip|rar)";
        $Ext = "(.gif|.jpg|.png|.xls|.doc|.ppt|.pdf|.zip|.rar)";
        $fichier = ereg_replace("IMG/$Rep/", "", $fichier) ;
        $fichier = ereg_replace("$Ext", "", $fichier) ;
        return $fichier;
}
[rg]
20 novembre 2008 14:26
+ simple

Code pour le fichier mes_fonctions.php :

function nom_fichier ($fichier) {

        if (eregi('^IMG/[a-z]+/(.*)\.[a-z]+$',$fichier,$r)) {
                return $r[1];
        } else {
                return $fichier;
        }
}

Exemple d’utilisation dans une boucle DOCUMENTS :

...
[(#TITRE|supprimer_numero|sinon{[(#FICHIER|nom_fichier)]})]
...

Cordialement

denisb
20 novembre 2008 15:41
Afficher le nom réel (+ extension) d’un fichier dans la boucle documents

mieux ? :

if (preg_match(',^IMG/([a-z]+/)?(.*)\.[a-z]+$,', $fichier, $r)) {
 return $r[2];
}
else {
 return $fichier;
}

au cas où $fichier directement dans IMG/

RSS






squelette