web-dev-qa-db-ja.com

(方法)ポイントシステムを実装して、クラブメンバーの出席/参加を追跡できますか?

私は学校でDrupal 7サイトを運営しています。私の最終的な目標は、クラブの役員がこのサイトを通じてメンバーに関するあらゆる種類の情報(連絡先など)を管理できるシステムを作成することです情報、私はすでに働いています。おそらく「クラブイベント」のようなコンテンツタイプ(が実際のイベントである必要はありません)日付モジュール)または「クラブ例会」が作成され、クラブ役員が基本的にメンバーのチェックリストを取得し、そのイベントに誰が参加したかを確認できるフィールドがあります。このコンテンツタイプには、特定のポイント値がそのノードに割り当てられ、リストでチェックされている人は誰でも、特定の数のポイントがアカウントに追加されます。

最後に、役員がすべてのメンバーのリストと彼らが獲得したポイント数/彼らが出席したイベントのリストを表示できる、ある種のビューがあるはずです。

これは、Drupalフレームワーク内で行うのに現実的なもののように聞こえますか?その場合、どのモジュールが必要になるかについての提案はありますか? ユーザーポイント モジュールでしょうか?使用できますか?

私はこれまでDrupalのモジュールを書いたことがありませんが、必要に応じて少し手を汚すことに反対していません。

1
Devin

それが私なら、まずメンバーの役割を作成します。私は各メンバーに登録してもらい、役員にmemberの役割を割り当てさせます。

次に views module を使用して、ロールによるフィルターを使用してメンバーのリストを表示します。これにより、メンバーのリストを表示できます。

次に、データベースにattendanceテーブルとmeetingテーブルを作成します。 (drupal db schemaの作成方法を学びたい場合は、次の手順でこれを行うことができます。おそらくフィールドがあります:

meetingId
meetingDate
meetingDescription

attendanceテーブルは次のようになります。

meetingId
userId

ユーザーが参加するとき、meetingIdテーブルからmeetingへの参照を作成し、drupalユーザーIDを使用してEnterを作成します。知りたい場合特定の会議を選択したユーザーは、attendanceに一致するmeetingIdテーブルからすべてのuserIdを選択します。

次に、forms apiを使用して会議を作成する簡単なモジュールを作成します。次に、memberロールを持つすべてのユーザーを選択し、再度forms apiを使用してattendanceテーブルのエントリを追加することにより、すべてのユーザーをリストする別のページを作成します。そこにいた一人一人のために。

したがって、リンクが1つとコード化されたページが2つになります。すべての会議を表示する「会議の表示」へのリンクが1つあります。会議をクリックすると、ユーザーを表示するページが表示されます。会議が過去の場合(いくつかの履歴データが存在することを意味します)、その会議には履歴出席データが含まれているはずです。これは、2つの方法のいずれかで処理できます。履歴データを表示して編集を許可しないか、元のフォームを表示して出席者のチェックボックスに入力します。それ以外の場合は、新しい会議であり、フォームを表示するだけです。それが私なら、編集を許可し、同じフォームであるため、データがある場合はチェックボックスが表示されるだけなので、ページを簡素化します。

これはモジュールの書き方を学ぶ絶好の機会です。これは非常に単純ですが、Drupalモジュールの作成の概要を示すのに十分なほど複雑です。また、機能するか機能しないかの明確で定義可能な最終結果があります。

schema モジュールをチェックすると、モジュールを介してデータベーステーブルを作成するのに役立ちます。これは学ぶべきことです。

さらに一歩進めたい場合は、テーブルをビューに公開し、 views モジュールを使用してデータの表示部分を作成できます。ただし、自分でフォームを作成する必要があります。

更新:考えましたが、notes列を会議に追加して、人々がメモを入力して保存できるようにすることもできます。また、あなたの想像力はここでの限界です。他のあらゆる種類のことを行うことができます。ただし、最初のモジュールを表すのと同じくらい単純にしておくことにします。

1
Brandon Bearden

あなたは正しい道を進んでいます、ユーザーポイントはあなたが使うべきモジュールです。ポイントを割り当てるには、カスタムコーディングを行う必要がある場合があります。

  • ユーザーポイントモジュールを使用する
  • チェックボックスを作成し、ユーザーポイントを更新する
  • フックノード更新 を実装する小さなカスタムモジュールを記述します。チェックボックスの値をチェックして、ユーザーポイントを更新し、ポイント数と参加者リストを読んで、ユーザーにポイントを追加します。詳細については、ユーザーポイントを参照してください ドキュメント
0
Anil Sagar