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;
}
然后,我可以使用路径如下的菜单项来提供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"
,当您位于网站的根目录时,该链接将起作用,但是当您位于内容页面上时,浏览器将解释相对于内容页面的网址,它不会起作用。
如果您使用类似的路径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'),
在kiamlaluno的代码中添加$ items的定义,它将起作用。menu_tail_load是否应要求显式的加载参数的问题也在这里讨论:http ://drupal.org/node/298561 )
(不要忘记启用新模块,否则菜单系统将不接受新链接)