web-dev-qa-db-ja.com

Drupal 7のプロファイル2とパネル

Drupal 7で Panels を使用して Profile2 プロファイルページを上書きするにはどうすればよいですか?

オーバーライドしようとしているページは、新しいprofile2ページの1つに対する編集です。次にURLの例を示します。 http://example.com/profile-user_settings/%uid/edit

5
Citricguy

ページマネージャーの既存のページ( 推奨Letharion )および hook_men ()の使用に関する回避策があります。

プロファイル2はメニュールーターにプロファイルページを登録しないようなので、hook_menu()が必要でした。これにより、ページマネージャーの既存のページがページを傍受できなくなりました。

function MYMODULE_menu() {
    $items['profile-example'] = array(
        'page callback' => '_profile2_form',
        'page arguments' => array(),
        'access callback' => TRUE,
        'type' => MENU_CALLBACK,
    );
    return $items;
}

function _profile2_form() {
    global $user;
    module_load_include('inc', 'profile2_page', 'profile2_page');
    $profile2 = profile2_by_uid_load($user->uid, 'profile2_profile_system_name_goes_here');
    $entity_form = entity_ui_get_form('profile2', $profile2, 'edit');
    return $entity_form;    
}

これは Page Manager Existing Pages によってインターセプトされ、 Panels モジュールによって適切に表示されるようになりました。

6
Citricguy

「ページマネージャーの既存のページを使用した回避策」に関しては、'access callback' => TRUE,は、匿名ユーザー(つまり、uid = 0)にはプロファイルがないため、メニューフック内にあり、これによりダウンストリームエラーが発生します。追加できると思います

'access arguments' => array( 'edit own main profile')、

代わりに、Profile2の既存の権限を模倣するためにアレイに追加します。

0
user24737

上記のCitricguyに対応して、あなたの素晴らしいヒントを何度か試してみましたが、最終的に機能したのは、システムの各プロファイルのprofile2パスを効果的にハードコードすることでした。例:

$items['user/%user/edit/consumer_profile'] = array(
  'page callback' => '_profile2_form',
  'page arguments' => array(),
  'access callback' => TRUE,
  'title' => 'My Profile',
  'type' => MENU_LOCAL_TASK,
);
return $items;

残りの例は真実のままでした。そうは言っても、おそらく「consumer_profile」ビットをエンティティフェッチャーヘルパーに渡すことができます。

0
texas-bronius

これは 既知の問題 で、Panels2のようです。オーバーライドは、デフォルトのDrupalテンプレートエンジンで実行できます。

0
Citricguy

PanelsとProfile2の間に不足している接着剤を提供するパッチがここにあります。

https://drupal.org/node/1011370#comment-688422

0
Queenvictoria

Node Block モジュールを使用してブロックで計画することができます。これは、ノードのコンテンツをプロファイルページの構成可能なブロックに取り込むのに役立ちます。

レイアウトに関するページのカスタマイズを検討している場合は、page-profile.tpl.phpにフォーカスすることもできます。例えば新しいリージョンの配置など.

0
Shoaib Nawaz

私はこれを見てきませんでしたが、推測では、Profile2は、フォームがPanels UIの他のものと同様にアクセス可能になるためにctoolsの「タスク」を実装する必要があると言っています。

ただし、単純な使用例では、既存のページをラップする ページマネージャの既存のページ を試すことができます。これは、現在の使用例では十分です。

0
Letharion