web-dev-qa-db-ja.com

ユーザーポイントとポイントの理由を表示するビュー

ユーザーポイントモジュールを使用すると、自分のサイトのユーザーは、投稿したコンテンツや自分が加えた修正などにポイントが割り当てられます。ユーザーがログインしたときに、ユーザーが自分のポイントと、ポイントが割り当てられた理由を確認できるようにしたいと思います。ビューの出力は次のようになります。

  • 1.Blog Pic A、Blog Title A、Blog TeaserA(それから)Points

    2.Blog Pic B、Blog Title B、Blog TeaserB(そして)Points

ここで、ユーザーは自分のブログのアップロードのポイントを取得します。上記の結果を表示するビューを作成するにはどうすればよいですか?試しましたがうまくいきませんでした。 ユーザーポイントのコンテキストビューを使用してビューを作成serpoints Transactions:Userおよびserpoints Transactions:Points(Points)のフィールド。ただし、content:bodyなどのフィールドを取得していません。私は関係を追加する必要があることを理解していますが、ここでは少し混乱しています。 serpoints Transactions:Entity IDという関係を追加しようとしましたが、エラーが発生します:SQLSTATE [42S22]:列が見つかりません:1054 'on句'に不明な列 'userpoints_txn.nid'があります。これは何ですか。上記のユースケースのビューを作成するにはどうすればよいですか?それは簡単な解決策のようです。何が欠けていますか?

編集:さまざまなビューを試しましたが、必要なものを表示しているものはありません。誰かがビューをエクスポートできれば幸いです。または、少なくとも、私をガイドして、どこが間違っているのかも理解できるようにしてください。

6
why

私のサイトの1つでユーザーポイントがアクティブになっていて、探しているディスプレイがモジュールに統合されています。

ユーザーアカウントを見ると、タブ(ポイント)(/user/$uid/points)があるはずです。

独自のページを作成するには、usersテーブルに必要な関係を導入し、user:uidでその関係を使用するコンテキストフィルターを導入します。設定画面が表示されたら、「フィルターがURLに含まれていない場合」の下に、デフォルト値>現在ログインしているユーザーのUIDを入力します。これでビューが機能するはずです。

:最初に関係を作成する必要があります。その後、コンテキストフィルターで使用できます。


編集:ステップバイステップ。

  1. 新しいビューを追加:(/admin/structure/views/add

    「ビューの追加」画面で、ビュー名を入力し、「すべて」タイプの「ユーザーポイントトランザクション」の表示を選択します。フィールドを表示するためにテーブル形式を選択しました。残りは後で調整可能です。

    [続行して編集]をクリックして、編集画面に移動します。

  2. 「Userpoints Transactions:User」の関係を追加します。 「必須」と「すべてのディスプレイを適用」をチェックします。これにより、usersテーブルがビューに表示されます。

  3. 先ほど作成した関係を使用して、「users:uid」にコンテキストフィルターを作成します。 「ログインしているユーザーのUID」として提供されるデフォルト値を設定し、適用します。

  4. 必要なフィールドを追加し、ビューをフォーマットします。

これはエクスポートです:

$view = new view();
$view->name = 'users_points';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'userpoints_txn';
$view->human_name = 'Users Points';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Users Points';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'none';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '10';
$handler->display->display_options['style_plugin'] = 'table';
/* Relationship: Userpoints Transactions: User */
$handler->display->display_options['relationships']['uid']['id'] = 'uid';
$handler->display->display_options['relationships']['uid']['table'] = 'userpoints_txn';
$handler->display->display_options['relationships']['uid']['field'] = 'uid';
$handler->display->display_options['relationships']['uid']['required'] = TRUE;
/* Field: User: Name */
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'users';
$handler->display->display_options['fields']['name']['field'] = 'name';
$handler->display->display_options['fields']['name']['relationship'] = 'uid';
/* Field: Userpoints Transactions: Description */
$handler->display->display_options['fields']['description']['id'] = 'description';
$handler->display->display_options['fields']['description']['table'] = 'userpoints_txn';
$handler->display->display_options['fields']['description']['field'] = 'description';
/* Field: Userpoints Transactions: Points */
$handler->display->display_options['fields']['points']['id'] = 'points';
$handler->display->display_options['fields']['points']['table'] = 'userpoints_txn';
$handler->display->display_options['fields']['points']['field'] = 'points';
/* Contextual filter: User: Uid */
$handler->display->display_options['arguments']['uid']['id'] = 'uid';
$handler->display->display_options['arguments']['uid']['table'] = 'users';
$handler->display->display_options['arguments']['uid']['field'] = 'uid';
$handler->display->display_options['arguments']['uid']['relationship'] = 'uid';
$handler->display->display_options['arguments']['uid']['default_action'] = 'default';
$handler->display->display_options['arguments']['uid']['default_argument_type'] = 'current_user';
$handler->display->display_options['arguments']['uid']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['uid']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['uid']['summary_options']['items_per_page'] = '25';

/* Display: Page */
$handler = $view->new_display('page', 'Page', 'page');
$handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
$handler->display->display_options['path'] = 'users-points';

/* Display: Block */
$handler = $view->new_display('block', 'Block', 'block');
$handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'some';
$handler->display->display_options['pager']['options']['items_per_page'] = '5';

2番目の編集

表示されたスクリーンプリントに表示される説明はデータベースには保存されませんが、ページが要求されたときにその場で生成されます。

これがビューの完成方法です。

まず、 Views PHP モジュールをインストールしてアクティブ化します。

次に、userpoints.views.incに移動し、435行目の'field' => 'nid';'base field' => 'nid';に変更します。次に、行466の後に次のコードを挿入します。

$data['userpoints_txn']['txn_id'] = array(
      'title' => t('Transaction ID'),
      'help' => t('The transaction ID for the points allocation.'),
      'field' => array(
          'handler' => 'views_handler_field',
      ),
      'filter' => array(
          'handler' => 'views_handler_filter_string',
      ),
      'sort' => array(
          'handler' => 'views_handler_sort',
      ),
  );

これにより、トランザクションIDがビューにアクセスできるようになります。 (必要な変更は、この回答の最後にリンクされているパッチファイルに含まれています。)

ビューを現在の形式で保存して一時キャッシュをクリアしてから、/admin/config/development/performanceに移動してキャッシュをクリアします。

ビューに戻り、「Userpoints Transactions:Transaction ID」をフィールドとして追加し、表示から除外するように設定します。

次に、別のフィールドを追加します。 「フィールドの追加」画面で、グローバルでフィルタリングし、「グローバル:PHP」を選択します。

フィールドを構成するには、選択したラベルを作成し、[出力]ボックスに以下を追加します。

<?php
$transaction = userpoints_transaction_load($row->txn_id);
$value = userpoints_create_description($transaction);
echo $value;
?>

:値ボックスには何も配置しないでください!それは別の目的で使用されます。

ビューを保存したら、準備完了です。

[〜#〜] btw [〜#〜]。 userpoints.views.incで必要な変更は、私がD.Oで開いた Features Request 問題に添付されたパッチにあります。

5
Triskelion