Affichage fichier attaché

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Dans le blog que j'ai mis en place, il est possible d'attacher des fichiers grâce au module upload. Lorsqu'un billet est créé avec des fichiers attachés, 1 lien indique le nombre de fichiers attachés. Lorsque l'on clique sur ce lien, on voit l'entier du billet suivit d'un tableau avec tous les fichiers attachés.

Comment faire pour que ce tableau soit visible directement dans le billet sans que l'on doive l'ouvrir ou cliquer sur le lien?

Faut il faire une modification dans le thème ou dans le module blog ou upload? Dans le module upload, j'ai retrouvé la fonction theme_upload_attachments($files)-> Displays file attachments in table. Je ne sais pas si je dois utiliser cette fonction pour résoudre ce problème d'affichage?

Merci

Raphael

Version de Drupal : 

Comment faire pour que ce tableau soit visible directement dans le billet sans que l'on doive l'ouvrir ou cliquer sur le lien?
En fait ce que tu vois n'est pas le billet mais le "teaser" donc la question est plutot comment voir les fichiers ds le "teaser".

Don perso j'ai une reponse "sale"
ds le module upload, tu as la fonction upload_nodeapi qui justement s'occupe de rajouter les fichiers ds les nodes.
Donc si on regarde le code

<?php
   
case 'view':
      if (isset(
$node->files) && user_access('view uploaded files')) {
       
// Add the attachments list to node body with a heavy
        // weight to ensure they're below other elements
       
if (count($node->files)) {
          if (!
$teaser && user_access('view uploaded files')) {
           
$node->content['files'] = array(
             
'#value' => theme('upload_attachments', $node->files),
             
'#weight' => 50,
            );
          }
        }
      }
      break;
?>

y a un ti "if (!$teaser ..." qui empeche de voir les fichiers si t ds le teaser.
Donc si tu enleves ca, bin ca te feras tout le tps apparaitres les fichiers.

Bon par contre apres il reste le probleme des links ce que tu decris par "1 lien indique le nombre de fichiers attachés".

Ca c'est pris en charge par le hook_links, donc ds le code upload_links. La, pareil, la solution sale est de commenter toute la fonction et t'es tranquile...

Bon c bien joli tout ca, mais du coup ca fait des modifs ds le core et c pas top.
Le pb est que je suis pas tres sur de la version "propre" de mon code.
1/ Y a pas de theme qui gere ca.
2/ a mon avis il faut surcharger les fonctions upload_nodeapi et upload_links par un module propre mais j'avoue que je saurai pas trop comment m'y prendre...

Merci pour vos réponses qui m'ont aidé à y voir plus clair!

en réglant la longueur des contributions abrégées sur "illimité" ?
Cela affiche tout ce que contient le body, mais pas les fichiers attachés.

Après 2-3 essais, il suffit d'enlever le "!" se trouvant dans le code proposé par tostinni juste avant le "$teaser" pour afficher les fichiers attachés (dans le teaser) :
if (!$teaser && user_access('view uploaded files')

tostinni a tout à fait raison : mieux vaut ne pas modifier le noyau de Drupal ; il t'a d'ailleurs indiqué la bonne solution (utiliser hook_nodeapi() pour l'affichage des fichiers attachés dans le teaser, et hook_link_alter() pour modifier les liens affichés sur le node).

Cela dit, si tu débutes avec Drupal, tout ça te paraîtra probablement compliqué, alors un conseil : garde un fichier dans lequel tu répertories toutes les modifications que tu fais dans le noyau de Drupal. Ainsi, le jour où tu le mettras à jour, tu pourras reporter ces modifs dans la nouvelle version sans trop de difficulté.