web-dev-qa-db-ja.com

hook_menu_alterでURL​​をオーバーライドする:ファイルパスの問題

'mymodule'では、次のように、hook_menu_alterでメニューのURLをオーバーライドしようとします。

global $base_url;

$items['node/%node/delete'] = array(
  'page arguments' => array('myfunction', 1),
  'file' => $base_url .'/'. drupal_get_path('module', 'mymodule') .'/includes/custom_node_delete_confirm.inc',
);  

ファイルパスが相対パスであり、「/」で始まるため、エラーが発生しました

Failed opening required
'/http://localhost/mysite/sites/all/modules/mymodule/includes/custom_node_delete_confirm.inc'

これも機能しません:

'file' => 'includes/custom_node_delete_confirm.inc'

これどうやってするの ?ありがとうございました

2
pico34

file pathを明示的に設定できます。

ファイルパス:「ファイル」で指定されたファイルを含むディレクトリへのパス。デフォルトでは、フックを実装するモジュールへのパスになります。

したがって、コードは次のようになります。

$items['node/%node/delete']['page arguments'] = array('myfunction', 1);
$items['node/%node/delete']['file'] = 'includes/custom_node_delete_confirm.inc';
$items['node/%node/delete']['file path'] = drupal_get_path('module', 'mymodule');

絶対に必要でない限り、既存のルーターアイテムを完全に上書きしないように注意してください。この例では、必要なaccess callback/access argumentsとタイトルも削除しています。代わりに、上記の例のように必要な値のみを変更してください。

8
Clive

これを試してください

'file' => drupal_get_path('module', 'mymodule') . '/includes/custom_node_delete_confirm.inc',
0
monymirza