web-dev-qa-db-ja.com

ユーザーノードビューとクイズの結果を追跡する方法

特定のユーザーが特定のノードのグループ(トレーニング資料)を読み、それらのノードに関連するクイズを行ったかどうかを追跡する最も簡単な方法を探しています。成功した場合、ユーザーにいくつかのポイントとバッジを付与し、サイト管理者がユーザーごとに「読み取り」/「読み取りなし」の結果を含むすべてのトレーニング資料のリストを取得できるようにしたいと思います。これにはさまざまな方法があることは知っていますが、どちらが最も簡単な方法かはわかりません。

  • 目標+ルールを使用します(ただし、ユーザーが特定のノードにアクセスしたかどうかを正確に追跡する方法はわかりません)。
  • アクティビティモジュールを使用していますか?
  • ハートビートモジュールを使用していますか?

これらのどれもコーディングなしでそのようなことをすることが可能であるように見えません、または私は何かを逃していますか?

ありがとう!

2
Benas Plentas

私は Goals モジュール(開示:私はそのメンテナーです)を使用して、「ユーザーが特定のノードにアクセスしたかどうかを追跡します」(質問のように) )。カスタムコーディングの必要はありません。その方法の詳細については、以下をお読みください...

目標を設定する

相対パスadmin/config/goals/manageに移動し、[ゴールを追加]リンクを使用して、1goalを説明とともに(たとえば)定義します。

View some node, only 1 time

タスクを構成する

上記の目標を達成するには、完了する(Task(s))を定義します。 1つの目標に対して複数のタスクを完了する必要がある場合でも、必要なのは1つだけです。これは、単にView a nodeview_a_nodeのようなマシン名を使用するとします)。

タスクの実行中に進捗状況を追跡する

このタスクを完了するために1人のユーザーが行った進行状況を追跡するには、 Rules モジュールを使用して適切なルールを記述し、完了に関連するサイトで発生する関連イベントを記録するだけですtask目標

上記の目標/タスクの場合、次のような1つの(非常に基本的な)ルールのみが必要です。

  • Rules Event:コンテンツが表示されます。
  • Rules Events
    • ユーザーが「認証済み」の役割を持っていることを確認します(それがどのユーザーであるかを他にどのように知っていますか?).
    • 表示されているノードのノードIDを確認してください(例:node = 123)。
  • Rules Action:目標のタスクを記録します(当然、記録されるタスクは「ノードの表示」です)。これは Goals マジックの一部が発生する場所です。たとえば、タスクのオプションのタスク構成オプション(1時間に1回のみなど)で要件を確認します。

これはおそらくこれに使用できるルールです(正確なマシン名view_a_nodeで定義された「タスク」がある場合は、ルールUIを使用して自分のサイトにインポートし、そうでない場合はそれを実行しますそのようなインポートを開始する前にそのマシン名を適合させてください):

{ "rules_record_task_view_a_node" : {
    "LABEL" : "Record task view_a_node",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "goals" ],
    "REQUIRES" : [ "rules", "goals" ],
    "ON" : { "node_view" : [] },
    "IF" : [
      { "user_has_role" : {
          "account" : [ "site:current-user" ],
          "roles" : { "value" : { "2" : "2" } }
        }
      },
      { "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "article" : "article" } } } },
      { "data_is" : { "data" : [ "node:nid" ], "value" : "123" } }
    ],
    "DO" : [
      { "goals_task_record" : {
          "task_name" : "view_a_node",
          "user_to_save_for" : "[site:current-user]",
          "task_id" : "Node ID of viewed node = [node:nid]"
        }
      }
    ]
  }
}

上記は、node/123のような単一ノードから始めます。 node/124、node/125およびnode/126も検証するように拡張するには(それらが表示される順序は関係ありません...)、これを行う方法は次のとおりです。

  • 追跡する同様の3つのタスク(他の3つのノード用)を、関連するノードIDを含むマシン名で追加します。
  • 上記のルールを他の各ノードに複製します(違いは、ルール条件のノードIDとルールアクションのタスクのマシン名のみです)。別の方法として、 条件付きルール モジュールを使用して、これらの4つのルールを1つのルールに統合します。
2
Pierre.Vriens