hook_menuで定義したアクセスURLに、ワイドカード’%’(任意の文字、数字)の使用ができます。例えば、あるページのURI: 「/user/123/fbconnect」、このページにuid=123のユーザーのfbconnectを表示するページとなります。ユーザーにより、uidは変わります。
実際にhook_menuでは、連想配列のキー: $items['user/%/fbconnect'] で表現します。ここで、ワードカード’%’が使用されています。
ワイドカードが二つのパタン
パタン1: ワイドカードのみの
- このパタンは比較的に単純で、分かりやすいです
- URLにあるワイドカードの部分を直接に「page callback」関数に定義された関数の引数として渡します。
function [my-module-name]_menu() {
$items['user/%/fboauth'] = array( //ワイドカード'%'の使用
'title' => t('Facebook settings'),
'page callback' => 'fboauth_user_form', //ページ定義関数の呼び出し
'page arguments' => array(1), //パスの1番目(0から)を引数に
・・・・,
);
function fboauth_user_form($uid){ //URIの1番目にあるワードカードを引数に
$user = user_load($uid);
・・・
}
- URIに指定された('page arugments'=>array(1))部分(%:uid)をページ定義関数(fboauth_user_form($uid))の引数にします
パタン2: ワイドカード+ファンクション名
- このパタンは「Auto-loader Whitcarts」と言います
- 例: $items['user/%user/fboauth'] = array( ・・・・・ )ではワイドカード'%'とファンクションuserと一緒に定義されています。
- パスにあるワイドカードの部分を呼びされたページ定義関数に直接に渡すのではないです
- ワイドカードを引数として、定義されたファンクションよりUserオブジェクトをロードして、ページ定義関数に渡します

- 上記の例では、Drupalの固有関数(user)を利用していたため、独自にそのローダー関数の定義は不要となります。
- 以下の例では、独自のローダー(custom_obj_load())を定義しています

- スペシャルオブジェクトローダーの関数名は: ワードカードの後ろに定義したオブジェクト名(ここは: custom_obj)+'_load' => custom_obj_load($obj_id)となります