Ответ Киамлалуно не совсем сработал для меня. Использование% menu_tail вызвало массу ошибок, связанных с отсутствием аргументов в функции menu_tail_load:
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).
Что сработало для меня
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;
}
Затем я мог бы обслуживать файлы в папке sites / d8 / files (и подпапках), используя пункты меню с такими путями, как sites/d8/files/Documents/MyFile.pdf
Система меню будет генерировать ссылку, как href="https://drupal.stackexchange.com/sites/d8/files/Documents/MyFile.pdf"
Если вы не используете модуль пользовательского меню, система меню отклонит путь, начиная с описанного выше.
Если вы попытаетесь использовать путь как http:sites/d8/files/Documents/MyFile.pdf
, он создаст ссылку как href="http:sites/d8/files/Documents/MyFile.pdf"
, которая будет работать, когда вы находитесь в корне сайта, но когда вы находитесь на странице контента, браузер будет интерпретировать URL относительно страницы контента, и это не сработает.
Если вы используете путь, подобный http:/sites/d8/files/Documents/MyFile.pdf
, система меню примет его, но система меню создаст ссылку, подобную href="http:/sites/d8/files/Documents/MyFile.pdf"
которой браузер (по крайней мере, Safari) будет интерпретировать как href="http://sites/d8/files/Documents/MyFile.pdf"
, и не сможет найти сервер с именем «sites».
(При дальнейшем изучении причина, по которой код, использующий menu_tail, не работает, заключается в том, что вам нужно добавить «аргументы загрузки», как указано здесь: http://api.drupal.org/api/drupal/includes--menu.inc/function / menu_tail_load / 7. Если вы добавите 'load arguments' => array('%map', '%index'),
определение $ items в коде kiamlaluno, оно будет работать. Вопрос о том, должна ли menu_tail_load требовать явных аргументов загрузки, также обсуждается здесь: http://drupal.org/node/298561 )
(Не забудьте включить новый модуль, иначе система меню не примет новые ссылки)