відповідь kiamlaluno не дуже спрацювала для мене. Використання% 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;
}
Тоді я міг обслуговувати файли в папці сайти / d8 / файли (і підпапки), використовуючи пункти меню з такими шляхами, як 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"
і не спробує знайти сервер під назвою "сайти".
(При подальшому дослідженні причиною невдачі коду за допомогою menu_tail є те, що вам потрібно додати "аргументи завантаження", як зазначено тут: http://api.drupal.org/api/drupal/includes--menu.inc/function / menu_tail_load / 7. Якщо ви додасте 'load arguments' => array('%map', '%index'),
до визначення елементів $ у коді kiamlaluno, воно буде працювати. Питання про те, чи повинен меню_tail_load вимагати явних аргументів завантаження, також обговорюється тут: http://drupal.org/node/298561 )
(Не забудьте включити ваш новий модуль, інакше система меню не прийме нові посилання)