web-dev-qa-db-ja.com

コンテンツ作成時にユーザーを作成する

「コース」コンテンツタイプには、登録済みユーザーを指す「インストラクター名」フィールドがあります。

「講座」の内容を保存したら、「講師名」欄に名前が登録されているユーザーがいないか確認する必要があります。ある場合は、作成したコンテンツと彼のIDを関連付けます。そうでない場合は、新しいユーザー(おそらくダミーユーザー)を作成し、コンテンツをそのユーザーに関連付けます。

これは、モジュールを使用するだけで、PHPコーディングなしで可能ですか?もしそうなら、どうやって?私は新しいdrupal .netの背景を持つユーザーで、phpの知識がありません。

6
turzifer

はい、あなたはそれを Rules module で行うことができます。

基本的に、Rules&Rules_UIモジュールを有効にした後、ノードで動作する新しいルールを作成し、新しいユーザーエンティティを作成するアクションを追加します。必要に応じて、条件を指定するために少し時間をかける必要があります。

添付されたフローのスクリーンショット。

  • Create a new Rule
  • Add action: Entity Type - User
  • Configure Rules action
  • Rules Configuration Overview
6
gilzero

前述のように、これはルールモジュールで行うことができます。ただし、非常に重要な詳細がいくつかあります。さらに、自分がやろうとしていることを実行するためのより良い方法があります。

あなたの質問を解決する方法:

1.0「反応」ルールを作成します(www.example.com/admin/config/workflow/rules/reaction/add)。

1.1 Reactイベント: "新しいコンテンツを保存した後";

状況に応じて、他にもいくつかの可能性があることに注意してください。何をしたいかによっては、「新しいコンテンツを保存する前」または「コンテンツを更新した後」に反応する方が適切な場合があります。それぞれの可能性は、それ自身の後続の構成を決定します。

2.0追加条件:「コンテンツはタイプです」(ルールが「コース」コンテンツの場合にのみルールが起動するようにするため)。

2.1コンテンツ:「ノード」

2.2コンテンツタイプ:「コース」(または)

3.0条件を追加:「プロパティはエンティティが存在する」(ユーザー名が存在しないことを確認するため)

3.1エンティティタイプ:「ユーザー」

3.2プロパティ:「名前」(またはその他のユーザーフィールド)。

3.3値:「インストラクター名」(関連する投稿に基づく。それ以外の場合は).

3.4この条件を無効にします。 (ユーザーが存在する場合にルールが起動しないようにするため)

4.0アクションの追加:「新しいエンティティの作成」

4.1エンティティタイプ:「ユーザー」

4.2名前:「Node:created:instructor_name」(「instructor name」フィールドが必要なことに注意してください)

4.3メール:(ダミーユーザーを作成する場合は、ほとんどの場合「example.com」アドレスを使用してメールが送信されないようにする必要があります。)

有効な電子メールを提供するか、使用可能なトークン(@ example.comなど)を使用してそれを構築する必要があることに注意してください。それ以外の場合、このルールは通知なしで失敗します。これが、多くの場合ベストプラクティスです。実際に予期したことが発生したかどうかを確認し、発生していない場合は通知します。

このルールは、指定したとおりに実行します。新しいコースコンテンツの「インストラクター名」フィールドと同じユーザー名のユーザーが存在するかどうかをテストし、ユーザーが存在しない場合はユーザーを追加します。問題は、あなたの質問が最適ではないソリューションを前提としていることです。

別の「ダミー」ユーザーがいる2番目のコースがあるとどうなりますか?どれが本物でどれがダミーユーザーかを知る方法はありますか?アプリケーションで実際のユーザーに「Taught by DummyUser」を表示することは許容できる方法ですか?特定された実際のインストラクターがインストラクターでない場合はどうなりますか?

ダミーユーザーに関連するこれらの問題や多くの問題に対処するのではなく、質問を再構成し、講師をA)が存在し、B)が存在しない場合にコースを講師に関連付ける方法を尋ねてみませんか?

質問を再構成する場合、単純なものから非常に甘いものまで、さまざまな答えがあります。利点は、データモデルが現実と一致するため、対処する必要のあるこれらすべての奇妙な問題を回避できることです。

一方では、答えは単に「インストラクター名」フィールドを必須にしないことです。一方で、次のような追加も可能です。Viewsモジュールを使用して、講師のいないコースのみを一覧表示します。さらに、コンテキスト管理モジュールを使用して、ユーザーを追加し、自動的にコースに関連付ける方法を提供します。

他の人が指摘したように、 Node One のJohan Falkは、多くのスクリーンキャストですべての詳細を説明する素晴らしい仕事をしました。

4
Eric.chowanski