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="/drupal//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 /'load arguments' => array('%map', '%index'),
7。kiamlalunoのコードで$ itemsの定義に追加すると機能します。menu_tail_loadが明示的なロード引数を必要とするかどうかの問題についてもここで説明します:http ://drupal.org/node/298561 )
(新しいモジュールを有効にすることを忘れないでください。そうしないと、メニューシステムが新しいリンクを受け入れません)