web-dev-qa-db-ja.com

匿名の訪問者がコンテンツを送信できるようにするにはどうすればよいですか?

私は歴史的な出来事のリストを表示するウェブサイトに取り組んでいます。ほとんどのイベントは、サイトを管理する少数のユーザーグループによって追加されました。ただし、匿名の訪問者がサイトに追加するイベントを提案する機能も追加したいと思います。

匿名の訪問者がノード/追加フォームを利用できるようにすることもできますが、これはいくつかの理由で理想的ではありません。

  • 標準の提出フォームはかなり複雑なので、匿名の訪問者のためにこれを簡略化したいと思います。一部のフィールドは関係ないので、非表示にしたい。
  • 匿名の訪問者は、イベントに関する部分的な情報を送信でき、編集者が後で詳細を追加できる必要があります。
  • 匿名の投稿は、公開する前にモデレートする必要があります。
  • スパムの送信を防ぎたいのですが。

私はこれをどのように提案しますか?

新しいイベントを追加するために、サイトユーザー向けのより複雑なものと、匿名の訪問者向けのより単純な2つのフォームを使用することは可能ですか

3
William Mortada

Event Suggestion」という別のコンテンツタイプを作成します。これには、匿名ユーザーに提案を送信してほしいフィールドのみが含まれます。関連性がないと見なすフィールド(このような匿名ユーザーに対して「非表示」にするフィールド)は含めないでください。

このような追加のコンテンツタイプを作成する場合、そのフィールドには、既にあるコンテンツタイプと同じフィールドを使用します。たとえば、「Event」と言います。したがって、この新しいコンテンツタイプのフィールド(Event Suggestion)は、「ユーザーの小さなグループ」がすでに使用しているコンテンツタイプのフィールドのサブセットになります。 (=イベント)。

権限に関連する:匿名ユーザーがEvent提案を作成することを許可しますが、Eventを匿名ユーザーが作成することを許可しません。

スパムの削減/防止には、 HoneypotMollomCaptchareCaptcha などのモジュールを使用します。

Rules モジュールを使用して、タイプのノードに関連するワークフローを微調整して、作成(保存)されるイベントの提案を行います。いくつかのオプションに言及するだけです(リストは事実上無制限です)。

  • そのようなノードを非公開にします(スパム防止モジュールによってキャッチされないスパム投稿は、最初に確認しない限り表示されません)。
  • サイトを管理している小さなユーザーグループに電子メールメッセージを送信します(「新しいイベントの提案が承認を待っています」など)。
  • イベントの提案が送信されるときに、「確認メッセージ」のようなものを設定します(「イベントの提案をありがとう、すぐに見直されます...」など)。

サイトを管理するユーザーの小さなグループがそのようなイベントの提案を確認するとき、彼らは Node Convert モジュールを使用してEvent SuggestionEventに変換します。 Rules モジュールを使用すると、そのようなイベントも自動的に「公開」できます。そのようなノードが変換された後、サイトを管理する少数のユーザーグループは、「後でさらに詳細を追加する」と説明した内容を完了することができます。

フラグコンテンツアクセス のような他のモジュールは、探しているさまざまな機能をさらに強化する可能性があります。例えば。 「未公開」コンテンツを使用する代わりに、公開されているが、承認されたユーザーのみがアクセスできるコンテンツを使用できます。

ボトムラインRulesNode Convert を使用すると、かなり近くなり、おそらく- フラグ および コンテンツアクセス

View unpublished モジュールを追加することも興味深い改善のように思われます。編集者またはレビューア)が、特定のタイプの非公開ノードを表示します。

4
Pierre.Vriens

匿名ユーザーのためのシンプルなインターフェース

フォームフィールドの値を使用して、 node_save() と呼ばれるもののカスタムフォーム送信を作成します。カスタムフォームはシンプルで、匿名ユーザーに表示されるフィールドは限られています。

編集者によるコンテンツ管理

コンテンツをモデレートするには、 workbench_moderation module をインストールします。このモジュールを使用して、コンテンツタイプごとに異なるモデレート状態を設定できます。また、権限を持つユーザーにダッシュボードを提供するため、匿名ユーザーが作成したノードを公開する役割として編集者がいる場合は、中間としてドラフトを設定できます公開前のモデレーション状態、匿名ユーザーがカスタムフォームを送信すると、ノードがプログラムで作成され、ドラフト状態になります。編集者の役割には、workbench_moderationモジュールから送信されるドラフトダッシュボードにアクセスする権限があり、すべてのノードがリストされますドラフト状態。必要なのは、編集者の役割にノードをドラフトからパブリッシュに移動する権限を与えることだけです。

スパム保護

スパムを回避するために、カスタムフォームにキャプチャを含めることができます recaptcha module をインストールします。カスタムフォームには次のようなフィールドがあります

$form['captcha'] = array(
  '#type' => 'captcha',
  '#captcha_type' => 'recaptcha/reCAPTCHA',
);

リファレンス- reCaptchaをカスタムフォームに追加するにはどうすればよいですか?

2
arpitr

2つの簡単なオプションが表示されます。

1)送信用に完全に異なるコンテンツタイプを作成し、 Node Block のようなものを使用します

このモジュールでは、コンテンツタイプをブロックとして指定できます。これにより、サイトのコンテンツ管理者は、ブロック管理ページにアクセスしなくても、ブロックのテキストとタイトルを編集できます。ユーザーは、そのノードを編集するために、そのノードへの編集アクセスのみが必要です。

最終的なコンテンツの編集フォームに送信を表示するため、モデレーターは画面の上部から下部にコピーして貼り付け、好きなように変更を加えることができます

OR

2) フィールド権限 を使用します

フィールド権限モジュールを使用すると、サイト管理者はフィールドレベルの権限を設定して、任意のエンティティのフィールドを編集、表示、作成できます。

特徴

ノードだけでなく、任意のエンティティのフィールド権限を有効にします。役割ベースのフィールド権限により、ユーザーのアクセス権に基づいてさまざまな表示パターンを作成できます。作成者レベルの権限により、エンティティの所有者が誰であるかに基づいて、フィールドを表示および編集できます。各フィールドの権限は、デフォルトでは有効になっていません。代わりに、管理者はこの機能が必要なフィールドに対してこれらの権限を明示的に有効にすることができます。

匿名ユーザーにアクセスさせたくないフィールドの表示と編集を制限します。

次に、フラグシステムを作成します。モデレータのみが(フィールドのアクセス許可を使用して)表示および変更できるブール値であり、(どちらのコンテンツタイプについても)送信が受け入れられたかどうかをシステムに通知します。

フラグシステムでは Views を使用できます

あなたはビューが必要です

あなたはデフォルトのフロントページビューが好きですが、それを別の方法でソートしたいと思います。デフォルトの分類/用語ビューは好きですが、別の方法でソートしたいと思っています。たとえば、アルファベット順。/trackerを使用しているが、それを特定のタイプの投稿に制限したい。 'article'モジュールのアイデアは好きですが、記事が好きなように表示されません。特定のタイプの最新の5つの投稿を含むブロックを表示する方法が必要です。 「未読のフォーラム投稿」を提供したい。へのリンクを「月、YYYY(X)」の形式で表示する一般的なMovable Type/Wordpressアーカイブと同様の月次アーカイブが必要です。Xはその月の投稿数であり、ブロックで表示します。リンクをクリックすると、その月の投稿の簡単なリストが表示されます。

フラグの値に基づいて、モデレーターへの保留中の送信のリストを表示するには

匿名コンテンツの作成では、キャプチャやフォーム編集のタイミングなど、何らかの形のスパム制御を確認する必要がありますが、他の状況に最適なものを決定するために利用できるリソースはたくさんあります。

1
Geoff

Drupal 8の場合、サブフォーム( https://github.com/owenmorrill/subtonode )を開発して、特定のコンテンツタイプのノードにWebフォーム送信をプッシュしました(私たちのものは「会報」でした)。

現在のところ、提出者が提出物を編集することはできません。ノードがサブノードで作成されると、匿名ユーザーはそのノードにバックエンド/編集アクセスできなくなります。

0
owenpm3