2

私は Drupal を初めて使用するので、カスタム ユーザー プロファイルの単純なモジュールを作成したいと考えています。具体的には、ユーザー プロファイル用にいくつかのタブを挿入したいと考えています (従来のユーザー プロファイルには「表示タブ」と「編集タブ」の 2 つのタブがあります)。さらに3つのタブを追加したい。

  • 履歴を表示
  • プロフィールを共有
  • ショートカット

ただし、管理者プロファイルではなく、認証されたユーザーにのみ適用されます (管理者が自分のプロファイルを表示する場合、プロファイルは従来のプロファイルです)。これが私のコードです (私のモジュールの名前は :tung_tab です)。ここに tung_tab.module のコードがあります:

function tung_tab_menu() 
{
    $items = array();
    global $user;
        //if (!user_access('administer'))
        if($user->uid!=1)
     {
      $items['user/%/rvhistory'] = array(
        'title' => 'Review History ',
        'description' => 'Review History',
        //'page callback' => 'drupal_get_form',
        //'page arguments' => array('tung_tab_confirm_reviewh', 1),
        'access callback' => 'user_view_access',
        'access arguments' => array(1),
        'type' => MENU_LOCAL_TASK,
      );
      $items['user/%/sharehistory'] = array(
        'title' => 'Share History',
        'description' => 'Share History',
        //'page callback' => 'drupal_get_form',
        //'page arguments' => array('tung_tab_confirm_shareh', 1),
        'access callback' => 'user_view_access',
        'access arguments' => array(1),
        'type' => MENU_LOCAL_TASK,
      );
      $items['user/%/sc'] = array(
        'title' => 'Shortcut',
        'description' => 'Shortcut',
        //'page callback' => 'getDescription',
        //'page arguments' => array('tung_tab_confirm_shareh', 1),
        'access callback' => 'user_view_access',
        'access arguments' => array(1),
        'type' => MENU_LOCAL_TASK,
      );
     }
      return $items;
}

管理者タブでは適切に機能しますが、ログアウトしてから他のユーザーでログインしても何も変わらないので、//if($user->uid) という行にコメントを付ければ問題ないので、さらにコードを追加するとこの行で 'title' => 'Review History '.$user->uid, When I'm admin と表示されます Review History 1理由がわかりますか?コードに間違いがあると思います。モジュールを「mysite/sites/default/modules/」に配置しました。

4

1 に答える 1

2

if 条件内でメニュー項目を定義しないでください。代わりにアクセス コールバックとアクセス引数を使用して、メニュー コールバックへのアクセスを制御する必要があります。

違う:

function tung_tab_menu() 
{
    $items = array();
    global $user;
    if($user->uid!=1)
    {
        // defined menu items
    }
    return $items;
}

正しい:

function tung_tab_menu() 
{
    $items = array();
    global $user;
    // define the menu items here...
    return $items;
}

それを修正してみて、それでも同じ結果が得られるかどうかを確認してください。

于 2012-05-08T07:32:58.090 に答える