kiamlalunos antwort hat bei mir nicht ganz funktioniert. Die Verwendung von% menu_tail führte zu einem Sturm von Fehlern, bei denen die Funktion menu_tail_load Probleme mit fehlenden Argumenten hatte:
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).
Was für mich funktioniert hat war
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;
}
Dann könnte ich Dateien im Ordner sites / d8 / files (und in Unterordnern) mithilfe von Menüelementen mit Pfaden wie bereitstellen sites/d8/files/Documents/MyFile.pdf
Das Menüsystem generiert dann einen Link wie href="/drupal//sites/d8/files/Documents/MyFile.pdf"
Wenn Sie das benutzerdefinierte Menümodul nicht verwenden, lehnt das Menüsystem einen Pfad ab, der wie oben beginnt.
Wenn Sie versuchen, einen Pfad wie zu verwenden http:sites/d8/files/Documents/MyFile.pdf
, wird ein Link wie erzeugt href="http:sites/d8/files/Documents/MyFile.pdf"
, der funktioniert, wenn Sie sich im Stammverzeichnis der Website befinden. Wenn Sie sich jedoch auf einer Inhaltsseite befinden, interpretiert der Browser die URL relativ zur Inhaltsseite. und es wird nicht funktionieren.
Wenn Sie einen Pfad wie verwenden http:/sites/d8/files/Documents/MyFile.pdf
, akzeptiert das Menüsystem diesen, aber das Menüsystem erzeugt einen Link wie href="http:/sites/d8/files/Documents/MyFile.pdf"
, den der Browser (zumindest Safari) interpretiert href="http://sites/d8/files/Documents/MyFile.pdf"
, und versucht nicht, den Server mit dem Namen "sites" zu finden.
(Bei weiteren Untersuchungen schlägt der Code mit menu_tail fehl, weil Sie die 'Ladeargumente' hinzufügen müssen, wie hier angegeben: http://api.drupal.org/api/drupal/includes--menu.inc/function / menu_tail_load / 7. Wenn Sie 'load arguments' => array('%map', '%index'),
die Definition von $ items im Code von kiamlaluno ergänzen, funktioniert dies. Die Frage, ob menu_tail_load die expliziten Ladeargumente erfordern sollte, wird auch hier erläutert: http://drupal.org/node/298561 )
(Vergessen Sie nicht, Ihr neues Modul zu aktivieren, da das Menüsystem die neuen Links sonst nicht akzeptiert.)