私はオーチャードが初めてです。なので、変なところがあっても許してください!
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; }
}
私はどこで間違っていますか?