Odpowiedź kiamlaluno nie do końca zadziałała. Użycie% menu_tail spowodowało burzę błędów, że funkcja menu_tail_load miała problemy z brakującymi argumentami:
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).
To, co zadziałało, było dla mnie
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;
}
Następnie mógłbym wyświetlać pliki w folderze sites / d8 / files (i podfolderach), używając elementów menu ze ścieżkami takimi jak sites/d8/files/Documents/MyFile.pdf
System menu wygeneruje następnie link podobny do href="https://drupal.stackexchange.com/sites/d8/files/Documents/MyFile.pdf"
Jeśli nie użyjesz niestandardowego modułu menu, system menu odrzuci ścieżkę zaczynającą się jak wyżej.
Jeśli spróbujesz użyć ścieżki podobnej http:sites/d8/files/Documents/MyFile.pdf
, spowoduje to utworzenie linku podobnego href="http:sites/d8/files/Documents/MyFile.pdf"
, który zadziała, gdy będziesz w katalogu głównym witryny, ale gdy będziesz na stronie z treścią, przeglądarka zinterpretuje adres URL względem strony z treścią, i to nie zadziała.
Jeśli użyjesz ścieżki podobnej http:/sites/d8/files/Documents/MyFile.pdf
, system menu zaakceptuje ją, ale system menu wygeneruje link podobny do tego href="http:/sites/d8/files/Documents/MyFile.pdf"
, który przeglądarka (przynajmniej Safari) będzie interpretować jako href="http://sites/d8/files/Documents/MyFile.pdf"
, i nie uda się znaleźć serwera o nazwie „strony”.
(Podczas dalszego dochodzenia przyczyną niepowodzenia kodu przy użyciu menu_tail jest konieczność dodania „argumentów ładowania”, jak zauważono tutaj: http://api.drupal.org/api/drupal/includes--menu.inc/function / menu_tail_load / 7. Jeśli dodasz 'load arguments' => array('%map', '%index'),
do definicji $ items w kodzie kiamlaluno, to zadziała. Kwestia, czy menu_tail_load powinien wymagać jawnych argumentów ładowania jest również omawiana tutaj: http://drupal.org/node/298561 )
(Nie zapomnij włączyć nowego modułu, w przeciwnym razie system menu nie zaakceptuje nowych linków)