web-dev-qa-db-ja.com

groupという名前のカスタムエンティティのサブスクライブ/サブスクライブ解除ボタンが表示されないのはなぜですか?

group_module.jsの代わりにitems['group/%'] = {行を除いて、例とまったく同じようにitems['team/%'] = {でカスタムレンダリングを作成しました Rendering Entities 。グループノード(group/%)を除く他のすべてのコンテンツノードはokを示します。グループノードには、以下のgroups_menu_module.jsにサブスクライブ/サブスクライブ解除ボタンとメニュータブが表示されません。このモジュールgroups_menu_module.jsはどういうわけかロードされていないと思います。
エンティティグループのカスタムレンダリングがなく、2つのLOCAL_TASK_MENUメニュータブがあれば、すべてが完璧に機能することに言及する必要があります。

groups_menu_module.js

function groups_menu_module_menu() {
  try {
    var items = {};
    items['group/%']={
      title: 'view',
      page_callback: 'drupalgap_get_entity',
      page_arguments: ['groups_menu_module_default_page', 'node', 1]
    };
    items['group/%/provoli'] = {
      title: 'view',    
      type: 'MENU_DEFAULT_LOCAL_TASK'
    };
    items['group/%/melh'] = {
      title: 'members',
      type: 'MENU_LOCAL_TASK',
      page_callback: 'groups_menu_module_melh_page',
      page_arguments: [1],
      title_callback: 'groups_menu_module_melh_page_title',
      title_arguments: [1],
      access_callback: 'groups_menu_module_page_access',
      access_arguments: [1],
      options: {
        reloadPage: true
      }
    };
    items['group/%/anarthseis'] = {
      title: 'posts',
      type: 'MENU_LOCAL_TASK',
      page_callback: 'groups_menu_module_anarthseis_page',
      page_arguments: [1],
      access_callback: 'groups_menu_module_page_access',
      access_arguments: [1],
      options: {
        reloadPage: true
      }
    };
    return items;
  }
  catch (error) {
    console.log('groups_menu_module_menu - ' + error); 
  }
}

function groups_menu_module_default_page(node) {
  try {
    var content = {};
    content['title'] = { markup: node.title };
    return content;
  }
  catch (error) { 
    console.log('groups_menu_module_default_page - ' + error); 
  }
}

必要なすべての関数が実際の.jsファイルに存在することを言及する必要がありますが、それらは無関係だと思うので、オプトアウトしました。他のモジュールのpageshow関数は、上記のリンクの例のとおりです。

group_module.js

function example_team_pageshow(nid) {
  node_load(nid, {
    success: function(node) {
      var content = node.title; // Add other content here...
      $('#' + example_team_container_id(nid)).html(content).trigger('create');
    }
  });
}

結論として、カスタムエンティティのレンダリングにサブスクライブ/サブスクライブ解除ボタンを表示するにはどうすればよいですか?モジュールからog_ui_field_formatter_view()を呼び出して、ボタンを表示するにはどうすればよいですか?

何が必要かを自分で明確にしたかどうかはわかりません。誰かがより多くの情報を必要とするならば、いくつかのポイントを明確にするために以下のコメントでそう尋ねてください。

1
roko

カスタムページのコールバックパス_group/%_を使用してOrganic Groupsノードの表示を引き継いでいるため、DrupalGapはフィールド形式のビュー関数をフィールドに適用することを認識していません。基本的に、_page_callback_で独自のウィジェットを手動で作成/レンダリングする必要があります。

_var content = {};
content.title = { /* ... */ };
content.subscribe = { /* ... */ };
return content;
_

_og.js_ファイルには、グループへの参加/脱離に関連するヘルパー関数があります。そこから、単純なHTML/CSS/JSを使用してボタンを作成し(おそらくonclickハンドラーを使用)、ユーザーがグループサブスクリプションを操作できるようにします。

og_ui_field_formatter_view()関数を直接呼び出したい場合(非推奨)、すべての正しいパラメーターを渡す必要があります。

_(entity_type, entity, field, instance, langcode, items, display)_

正直に言うと、最も簡単なことではありません。グループからサブスクライブ/サブスクライブ解除するための独自のカスタムウィジェットを作成することで、長期的には幸せになるでしょう。

_og.js_ファイルから必要なコードを自由にコピーして、作業を楽にしてください。

1