在Orchard 1.7中创建自定义小部件

时间:2013-08-04 03:29:35

标签: orchardcms

我是Orchard的新手。如果有什么看起来很傻,请原谅我!

我想为我的Orchard网站创建一个自定义小部件,以鼓励访问者注册我的简报服务。我已经看到有一个使用HTML小部件的选项,但我想创建一个新的小部件类型,如“Newsletter”,我将在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; }
}

我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果您不想或不需要自己编写代码,自定义窗体模块就很棒。如果您确实希望自己处理表单提交而不使用自定义表单,那么您可以这样做:

  1. 创建自定义模块
  2. 创建一个定义新窗口小部件内容类型的迁移类(有关如何执行此操作的详细信息,请参阅文档。注意:您无需创建自定义部件。您甚至无需创建迁移文件创建内容类型 - 您可以使用配方文件来完成。虽然迁移的好处是它会在启用模块功能时自动执行。
  3. 创建特定于窗口小部件类型的内容项的视图(例如Widget-Newsletter.cshtml)。
  4. 在此视图的内部,写入包含表单元素和输入元素的标记。将此表单发回给您的控制器。
  5. 创建您的控制器。

答案 1 :(得分:0)

/admin界面中,点击<功能»标签上的模块,搜索自定义表单,然后点击启用。这将在左侧添加新的 Forms 管理员链接。

接下来,创建名为简报的自定义内容类型(在“内容定义”下),并添加两个名为“姓名和电子邮件”的字段(文本字段类型)。 / p>

最后,点击表单并添加新的自定义表单。给它一个标题:这将是访问的默认URL,例如“新闻稿表格”将包含Orchard默认的/ newsletter-form的URL。在内容类型下,从下拉列表中选择新创建的内容类型新闻稿。在此页面上自定义您想要的任何其他内容,然后单击立即发布

如果您想将其设为窗口小部件,请编辑内容类型并添加窗口小部件部件。使用您需要的规则创建一个图层,您可以将“新闻稿”窗口小部件添加到该图层上所需的任何区域。