La réponse de kiamlaluno n'a pas vraiment fonctionné pour moi. L'utilisation de% menu_tail a produit une tempête d'erreurs indiquant que la fonction menu_tail_load avait des problèmes avec des arguments manquants:
Warning: Missing argument 2 for menu_tail_load(), called in ... /includes/menu.inc on line 579 and defined in menu_tail_load() (line 827 of ... /includes/menu.inc).
Warning: Missing argument 3 for menu_tail_load(), called in ... /includes/menu.inc on line 579 and defined in menu_tail_load() (line 827 of ... /includes/menu.inc).
Ce qui a fonctionné pour moi était
function allow_menu_links_menu() {
$items = array();
$items['sites/d8/files/%'] = array(
'title' => 'Folder Content',
'page callback' => 'allow_menu_links_cb', /* never called */
'access callback' => TRUE,
);
return $items;
}
Ensuite, je pourrais servir des fichiers dans le dossier sites / d8 / files (et sous-dossiers) en utilisant des éléments de menu avec des chemins comme sites/d8/files/Documents/MyFile.pdf
Le système de menus générera alors un lien comme href="https://drupal.stackexchange.com/sites/d8/files/Documents/MyFile.pdf"
Si vous n'utilisez pas le module de menu personnalisé, le système de menus rejettera un chemin commençant comme ci-dessus.
Si vous essayez d'utiliser un chemin d'accès similaire http:sites/d8/files/Documents/MyFile.pdf
, il produira un lien similaire href="http:sites/d8/files/Documents/MyFile.pdf"
, qui fonctionnera lorsque vous serez à la racine du site, mais lorsque vous serez sur une page de contenu, le navigateur interprétera l'URL relative à la page de contenu, et ça ne marchera pas.
Si vous utilisez un chemin d'accès similaire http:/sites/d8/files/Documents/MyFile.pdf
, le système de menus l'acceptera, mais le système de menus produira un lien similaire href="http:/sites/d8/files/Documents/MyFile.pdf"
, que le navigateur (au moins Safari) interprètera href="http://sites/d8/files/Documents/MyFile.pdf"
et échouera à trouver le serveur nommé "sites".
(Après enquête, la raison pour laquelle le code utilisant menu_tail échoue est que vous devez ajouter les «arguments de chargement», comme indiqué ici: http://api.drupal.org/api/drupal/includes--menu.inc/function / menu_tail_load / 7. Si vous ajoutez 'load arguments' => array('%map', '%index'),
à la définition de $ items dans le code de kiamlaluno, cela fonctionnera. La question de savoir si menu_tail_load devrait exiger les arguments de chargement explicites est également discutée ici: http://drupal.org/node/298561 )
(N'oubliez pas d'activer votre nouveau module, sinon le système de menus n'acceptera pas les nouveaux liens)