What is the difference & relationship between layers, content types,
modules & widgets. And why are there no pages?!
レイヤーは、特定のページの (テーマによって指定された)どのゾーンにどのウィジェットが表示されるかを制御します。それらにはルールがあるため、たとえば、NotHomePageというレイヤーを作成し、ルールnot url("~/")を指定すると、そのレイヤーのゾーンに追加されたウィジェットは、ホームページ以外のすべての場所に表示されます。
コンテンツ タイプとは、サイト上で作成するコンテンツのタイプです。ページは、Orchard ですぐに使用できるコンテンツ タイプです。これにはRouteと呼ばれる部分が含まれているため、最初に作成できるプロパティの 1 つは、 mydomain.com/ sweet-pageなどのスラッグです。
モジュールは基本的に、Web サイトの特定の機能を作成する MVC 領域です。モジュールには、いくつかのカスタム パーツ、スクリプト、スタイリングなどが含まれる場合があります。コンタクト フォームモジュールはいくつかありますが、デフォルトの Orchard レシピで既にクックされているカスタム フォームモジュールを使用すると、おそらくより多くのことを学ぶことができます(有効にする必要があると思いますが、そこにあります。)
ウィジェットは、レイヤー上のゾーン(テーマで指定) に追加するコード スニペットのようなもので、ウィジェットを好きなだけ配置できます。ホームページに「メインコンテンツ」ゾーンがあり、顧客がタグラインとニュースレターにサインアップするための小さなフォームを希望する場合があります。キャッチフレーズ用の HTML ウィジェット (HTML の WYSIWYG エディターなどの基本情報を含む) とカスタム フォーム ウィジェット (サインアップ リクエストの作成を処理します) を追加できます。
Why is TripelFirst a layer for example - not a widget?
TripelFirst はレイヤーではなく、ThemeMachine テーマのゾーン、つまり、ウィジェットを含む場合と含まない場合があるページ上の領域である必要があります。
Why can't I just make a 'contact' page and add a widget
to it called 'Contact Form'?!
可能ですが、最初にいくつかのことを定義する必要があります。
- ContactFormRequest というコンテンツ タイプを作成します (「コンテンツ タイプ」モジュールを有効にする必要がある場合があります)。
- プロパティをクラス定義に追加するように、フィールド (名、姓など) を追加します。
- slug /contactを使用してContactというページを作成します
- ルールurl("/contact")を使用してContactLayerというレイヤーを作成します。
- カスタム フォーム ウィジェットを ContactLayer に追加し、コンテンツ タイプとしてContactFormRequestを選択してください。
- パーティ
これにより、探している基本的な動作が得られるはずです。もちろん、これをさらにカスタマイズすることもできます。
What would be the best practice way to add a Contact Us page -
as a layer or a Content Type?
個人的には、ContactFormRequest などの独自のコンテンツ タイプを使用する柔軟性を好みます。将来、顧客が連絡先フォームに身長、体重、年齢をプロパティとして追加したい場合、これらのフィールドをコンテンツ タイプに追加するだけで、あとは Orchard が処理します。