Créer une page de fichiers à télécharger

Voici une solution rapide pour mettre en place une liste de fichiers à télécharger dans une page statique.

L'idée est d'afficher sous forme de liste les noms de fichiers d'un dossier sous forme de lien cliquable ; les fichiers affichés sont filtrés par leur extension et le chemin d'accès au fichier est masqué.

Important : si les fichiers sont téléversés par FTP, veillez à ce qu'ils soient nommés avec uniquement des minuscules, des chiffres et le caractère “_” de manière à valider l'expression régulière qui sélectionne les fichiers dans le code ci-dessous :

a-z0-9-_

Pré-requis

Première étape

Installation

Créez une page statique et copiez dedans le code suivant

PluXml 5.2+

<?php
global $plxMotor;
# Nom du sous-dossier dans /data/documents/ contenant les fichiers à télécharger
$dir = 'telechargements/';
# Récupération et affichage de la liste des fichiers sous forme de liste
$glob = plxGlob::getInstance(PLX_ROOT.'data/documents/'.$dir);
if ($files = $glob->query('/[a-zA-Z0-9-_-]+.(jpg|gif|png|zip|rar|txt|pdf|mp3|flv|rtf|doc)$/')) {
sort($files);
echo '<ul class="telechargements">';
foreach($files as $filename) {
echo '<li><a href="'.$plxMotor->urlRewrite('?download/'.plxEncrypt::encryptId($dir.$filename)).'">'.$filename.'</a></li>';
}
echo '</ul>';
}
else echo "Aucun document";
?>

Boîte à outils

On peut ajouter des items à la boîte à outils par défaut en modifiant le code du fichier context.php, dans le répertoire lib/tpl/monobook. Aux environs de la ligne 355, insérer du code en s'inspirant des exemples suivants.

//Ajouter un lien pour nettoyer le cache des pages en un clic
$monobook['defaulttoolbox']['purgecache']['href'] = DOKU_BASE."doku.php?id=".$ID."&purge=true";
$monobook['defaulttoolbox']['purgecache']['text'] = $lang['monobook_purgecache'];
//Ajouter un lien pour exporter en ODT (pour le plugin ODT)
//FIXME: should probably check if ODT plugin is installed
$monobook['defaulttoolbox']['odt']['href'] = exportlink($ID, 'odt');
$monobook['defaulttoolbox']['odt']['text'] = $lang['monobook_odtexport'];
//Ajoute un accès rapide au plugin PageMove
//FIXME: Should probably hide this for non-superusers, check if plugin is installed
$monobook['defaulttoolbox']['movepage']['href'] = DOKU_BASE."doku.php?id=".$ID."&do=admin&page=pagemove";
$monobook['defaulttoolbox']['movepage']['text'] = $lang['monobook_movepage'];

Maintenant, dans le fichier de monobook /lib/tpl/monobook/lang/fr/lang.php, ajouter des lignes semblables aux exemples suivants.

$lang['monobook_purgecache'] = "Nettoie le cache des pages";
$lang['monobook_odtexport'] = "export OpenOffice";
$lang['monobook_movepage'] = "Déplace ou renomme la page";

Le modèle monobook nécessite l'installation du plugin displaywikipage (cf ci-après)

Ajustez le filtre des fichiers à afficher

Ajoutez/supprimer des extensions à la liste

(jpg|gif|png|zip|rar|txt|pdf|mp3|flv)

Personnalisation de l'affichage de la galerie

Vous pouvez mettre en forme l'affichage de votre page en ajoutant un style dans le fichier style.css de votre thème pour la classe appelée “telechargement”, définie dans le code source par la ligne:

echo '<ul class="telechargements">';

Exemple de code à rajouter dans le fichier css du thème pour personnaliser l'affichage

.telechargements ul{
...
}
.telechargements ul li {
...
}
.telechargements a{
...
}

Modifiez la ligne suivante

Remplacez par l'emplacement de vos fichiers

# Nom du sous-dossier dans /data/documents/ contenant les fichiers à télécharger
$dir = 'telechargements/';

Autres étapes

Conclusion

Problèmes connus

Voir aussi

(fr) http://

Basé sur << Article >> par Auteur.