[débutant] - Comment faire pour ne pas retourner de html dans une page dans un module ?

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 à tous,

je viens d'arriver sur ce forum, ceci est ma première question et certainement pas la dernière :)

Je débute en création de modules Drupal, et je dois avouer que je suis un peu perdu parmi les nombreuses hook possibles et le paradigme «semi - objet» de Drupal 6.

Voilà mon problème : Dans mon module, je cherche à faire retourner à une page autre chose que du HTML (des headers différents).
Ex : la page /download/file/12345 renverra des headers de ficher et non du html.

Cependant, je suis un peu perdu avec tous le système d'héritage de Drupal, et faire un bête :

<?php
function download_page()
{
header('blablabla');
}
?>

ne fonctionne pas.

Je ne sais pas si c'est suffisamment, clair, n'hésitez pas à me le dire !

Merci

baptisten

Forum : 

Pour la théorie de base sur les handlers de menu, j'ai ce tuto si tu veux :
http://arnumeral.fr/node/113

Sinon voici le code que j'utilise pour expédier un fichier au sein d'une callback. Après je ne sais pas à quoi correspond ton download/file/1234, donc là j'envoi un fichier "fixe" :

<?php
  
function mon_module_send_file_callback() {
$mon_fichier='/xxx/yyy/zzz/mon_fichier.zip';
 
header('Content-Description: File Transfer');
   
header("Cache-Control: public, must-revalidate, max-age=0");
 
header("Pragma: public");
   
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
   
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  
header("Content-Type: " . $file['mime-type']);
 
header('Content-Disposition: attachment; filename="' . basename($mon_fichier) . '";');
  
header("Content-Transfer-Encoding: binary");
 
header("Content-Length: " . filesize($mon_fichier));
 
$block_size = 4096;
   
$buffer = '';
   
$handle = fopen($mon_fichier, 'rb');
 if (
$handle === false) {
       return
false;
  }
  while (!
feof($handle)) {
      
$buffer = fgets($handle, $block_size);
     echo
$buffer;
  }
 
fclose($handle);

  exit();
// Empêche drupal de poursuivre
}
?>