私は歴史的な出来事のリストを表示するウェブサイトに取り組んでいます。ほとんどのイベントは、サイトを管理する少数のユーザーグループによって追加されました。ただし、匿名の訪問者がサイトに追加するイベントを提案する機能も追加したいと思います。
匿名の訪問者がノード/追加フォームを利用できるようにすることもできますが、これはいくつかの理由で理想的ではありません。
私はこれをどのように提案しますか?
新しいイベントを追加するために、サイトユーザー向けのより複雑なものと、匿名の訪問者向けのより単純な2つのフォームを使用することは可能ですか
「Event Suggestion」という別のコンテンツタイプを作成します。これには、匿名ユーザーに提案を送信してほしいフィールドのみが含まれます。関連性がないと見なすフィールド(このような匿名ユーザーに対して「非表示」にするフィールド)は含めないでください。
このような追加のコンテンツタイプを作成する場合、そのフィールドには、既にあるコンテンツタイプと同じフィールドを使用します。たとえば、「Event」と言います。したがって、この新しいコンテンツタイプのフィールド(Event Suggestion)は、「ユーザーの小さなグループ」がすでに使用しているコンテンツタイプのフィールドのサブセットになります。 (=イベント)。
権限に関連する:匿名ユーザーがEvent提案を作成することを許可しますが、Eventを匿名ユーザーが作成することを許可しません。
スパムの削減/防止には、 Honeypot 、 Mollom 、 Captcha 、 reCaptcha などのモジュールを使用します。
Rules モジュールを使用して、タイプのノードに関連するワークフローを微調整して、作成(保存)されるイベントの提案を行います。いくつかのオプションに言及するだけです(リストは事実上無制限です)。
サイトを管理するユーザーの小さなグループがそのようなイベントの提案を確認するとき、彼らは Node Convert モジュールを使用してEvent SuggestionをEventに変換します。 Rules モジュールを使用すると、そのようなイベントも自動的に「公開」できます。そのようなノードが変換された後、サイトを管理する少数のユーザーグループは、「後でさらに詳細を追加する」と説明した内容を完了することができます。
フラグ や コンテンツアクセス のような他のモジュールは、探しているさまざまな機能をさらに強化する可能性があります。例えば。 「未公開」コンテンツを使用する代わりに、公開されているが、承認されたユーザーのみがアクセスできるコンテンツを使用できます。
ボトムライン: Rules と Node Convert を使用すると、かなり近くなり、おそらく- フラグ および コンテンツアクセス 。
注: View unpublished モジュールを追加することも興味深い改善のように思われます。編集者またはレビューア)が、特定のタイプの非公開ノードを表示します。
匿名ユーザーのためのシンプルなインターフェース
フォームフィールドの値を使用して、 node_save() と呼ばれるもののカスタムフォーム送信を作成します。カスタムフォームはシンプルで、匿名ユーザーに表示されるフィールドは限られています。
編集者によるコンテンツ管理
コンテンツをモデレートするには、 workbench_moderation module をインストールします。このモジュールを使用して、コンテンツタイプごとに異なるモデレート状態を設定できます。また、権限を持つユーザーにダッシュボードを提供するため、匿名ユーザーが作成したノードを公開する役割として編集者がいる場合は、中間としてドラフトを設定できます公開前のモデレーション状態、匿名ユーザーがカスタムフォームを送信すると、ノードがプログラムで作成され、ドラフト状態になります。編集者の役割には、workbench_moderationモジュールから送信されるドラフトダッシュボードにアクセスする権限があり、すべてのノードがリストされますドラフト状態。必要なのは、編集者の役割にノードをドラフトからパブリッシュに移動する権限を与えることだけです。
スパム保護
スパムを回避するために、カスタムフォームにキャプチャを含めることができます recaptcha module をインストールします。カスタムフォームには次のようなフィールドがあります
$form['captcha'] = array(
'#type' => 'captcha',
'#captcha_type' => 'recaptcha/reCAPTCHA',
);
2つの簡単なオプションが表示されます。
1)送信用に完全に異なるコンテンツタイプを作成し、 Node Block のようなものを使用します
このモジュールでは、コンテンツタイプをブロックとして指定できます。これにより、サイトのコンテンツ管理者は、ブロック管理ページにアクセスしなくても、ブロックのテキストとタイトルを編集できます。ユーザーは、そのノードを編集するために、そのノードへの編集アクセスのみが必要です。
最終的なコンテンツの編集フォームに送信を表示するため、モデレーターは画面の上部から下部にコピーして貼り付け、好きなように変更を加えることができます
OR
2) フィールド権限 を使用します
フィールド権限モジュールを使用すると、サイト管理者はフィールドレベルの権限を設定して、任意のエンティティのフィールドを編集、表示、作成できます。
特徴
ノードだけでなく、任意のエンティティのフィールド権限を有効にします。役割ベースのフィールド権限により、ユーザーのアクセス権に基づいてさまざまな表示パターンを作成できます。作成者レベルの権限により、エンティティの所有者が誰であるかに基づいて、フィールドを表示および編集できます。各フィールドの権限は、デフォルトでは有効になっていません。代わりに、管理者はこの機能が必要なフィールドに対してこれらの権限を明示的に有効にすることができます。
匿名ユーザーにアクセスさせたくないフィールドの表示と編集を制限します。
次に、フラグシステムを作成します。モデレータのみが(フィールドのアクセス許可を使用して)表示および変更できるブール値であり、(どちらのコンテンツタイプについても)送信が受け入れられたかどうかをシステムに通知します。
フラグシステムでは Views を使用できます
あなたはビューが必要です
あなたはデフォルトのフロントページビューが好きですが、それを別の方法でソートしたいと思います。デフォルトの分類/用語ビューは好きですが、別の方法でソートしたいと思っています。たとえば、アルファベット順。/trackerを使用しているが、それを特定のタイプの投稿に制限したい。 'article'モジュールのアイデアは好きですが、記事が好きなように表示されません。特定のタイプの最新の5つの投稿を含むブロックを表示する方法が必要です。 「未読のフォーラム投稿」を提供したい。へのリンクを「月、YYYY(X)」の形式で表示する一般的なMovable Type/Wordpressアーカイブと同様の月次アーカイブが必要です。Xはその月の投稿数であり、ブロックで表示します。リンクをクリックすると、その月の投稿の簡単なリストが表示されます。
フラグの値に基づいて、モデレーターへの保留中の送信のリストを表示するには
匿名コンテンツの作成では、キャプチャやフォーム編集のタイミングなど、何らかの形のスパム制御を確認する必要がありますが、他の状況に最適なものを決定するために利用できるリソースはたくさんあります。
Drupal 8の場合、サブフォーム( https://github.com/owenmorrill/subtonode )を開発して、特定のコンテンツタイプのノードにWebフォーム送信をプッシュしました(私たちのものは「会報」でした)。
現在のところ、提出者が提出物を編集することはできません。ノードがサブノードで作成されると、匿名ユーザーはそのノードにバックエンド/編集アクセスできなくなります。