特定のユーザーが特定のノードのグループ(トレーニング資料)を読み、それらのノードに関連するクイズを行ったかどうかを追跡する最も簡単な方法を探しています。成功した場合、ユーザーにいくつかのポイントとバッジを付与し、サイト管理者がユーザーごとに「読み取り」/「読み取りなし」の結果を含むすべてのトレーニング資料のリストを取得できるようにしたいと思います。これにはさまざまな方法があることは知っていますが、どちらが最も簡単な方法かはわかりません。
これらのどれもコーディングなしでそのようなことをすることが可能であるように見えません、または私は何かを逃していますか?
ありがとう!
私は Goals モジュール(開示:私はそのメンテナーです)を使用して、「ユーザーが特定のノードにアクセスしたかどうかを追跡します」(質問のように) )。カスタムコーディングの必要はありません。その方法の詳細については、以下をお読みください...
相対パスadmin/config/goals/manage
に移動し、[ゴールを追加]リンクを使用して、1goalを説明とともに(たとえば)定義します。
View some node, only 1 time
。
上記の目標を達成するには、完了する(Task(s))を定義します。 1つの目標に対して複数のタスクを完了する必要がある場合でも、必要なのは1つだけです。これは、単にView a node
(view_a_node
のようなマシン名を使用するとします)。
このタスクを完了するために1人のユーザーが行った進行状況を追跡するには、 Rules モジュールを使用して適切なルールを記述し、完了に関連するサイトで発生する関連イベントを記録するだけですtaskの目標。
上記の目標/タスクの場合、次のような1つの(非常に基本的な)ルールのみが必要です。
Rules Event
:コンテンツが表示されます。Rules Events
: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も検証するように拡張するには(それらが表示される順序は関係ありません...)、これを行う方法は次のとおりです。