0

私はオーチャードが初めてです。なので、変なところがあっても許してください!

Orchard Web サイト用のカスタム ウィジェットを作成して、訪問者にニュースレター サービスへのサインアップを促したいと考えています。HTML ウィジェットを使用するオプションがあることを確認しましたが、AsideFirst ブロックで条件付きで使用する「ニュースレター」のような新しいウィジェット タイプを作成したいと考えています。

これは可能ですか?訪問者の名前とメールアドレスだけを取得したいのですが、フォームの送信はアクションコントローラーを使用して行われます。

このウィジェットは、VS で手作業でコーディングする必要がありますか? 実際、Orchard 管理コンソールではなく、この方法を使用したいと考えています。

助けを求めています。何か提案はありますか?

編集: Sipke Schoorstra の提案に従って、ウィジェットを作成することができました。ウィジェットを表示したい領域が、ゾーンに追加するときに管理者から設定したタイトルとともに表示されるようになりました。しかし、ビューで作成したコンテンツ (フォーム要素) が表示されません。

ビュー: (Views/NewsLetterSignupPart/NewsletterSignup.cshtml)

@model Emfluence.Intrust.Models.NewsLetterSignupPart
@{
ViewBag.Title = "Newsletter Signup";
}
@using (Html.BeginForm("NewsletterSignup", "NewsLetter", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="row-fluid">
<div class="span6">
<label>Name</label>
<input type="text" name="txtNewsletterUserName" required maxlength="50" style="width: 95%" />
<label>Email</label>
<input name="txtNewsletterUserEmail" type="email" required maxlength="85" style="width: 95%" />
<button class="btn pull-right">Submit</button>
</div>
</div>
}

Migration.cs

public int UpdateFrom15()
{
ContentDefinitionManager.AlterTypeDefinition(
"NewsletterWidget", cfg => cfg
.WithPart("NewsLetterSignupPart")
.WithPart("CommonPart")
.WithPart("WidgetPart")
.WithSetting("Stereotype", "Widget")
);
return 16;
}

NewsLetterSignupPart.cs

public class NewsLetterSignupPart : ContentPart<NewsletterSignupRecord>
{
[Required]
public string Name
{
get { return Record.Name; }
set { Record.Name = value; }
}
[Required]
public string Email
{
get { return Record.Email; }
set { Record.Email = value; }
}
}

そして NewsletterSignupRecord.cs

public class NewsletterSignupRecord : ContentPartRecord
{
public virtual string Name { get; set; }
public virtual string Email { get; set; }
}

私はどこで間違っていますか?

4

2 に答える 2

0

/adminインターフェイスで [モジュール] をクリックし、[機能] タブで [カスタム フォーム] を検索して、[有効にする] をクリックします。これにより、左側に新しいフォーム管理リンクが追加されます。

次に、 Newsletterという名前のカスタム コンテンツ タイプ (コンテンツ定義の下) を作成し、 Name と E-mail という 2 つのフィールド(テキスト フィールド タイプ)を追加します。

最後に、[フォーム] をクリックして、新しいカスタムフォームを追加します。タイトルを付けます。これがアクセスするデフォルトの URL になります。たとえば、「ニュースレター フォーム」には、Orchard のデフォルトでは /newsletter-form の URL が含まれます。[コンテンツ タイプ] の下で、ドロップダウンから、新しく作成したコンテンツ タイプの [ニュースレター] を選択します。このページで他に必要なものをカスタマイズし、[今すぐ公開] をクリックします。

これをウィジェットにしたい場合は、コンテンツ タイプを編集して Widget Partを追加します。必要なルールを含むレイヤーを作成すると、そのレイヤーで必要な任意のゾーンに「ニュースレター」ウィジェットを追加できます。

于 2013-08-04T12:50:02.543 に答える