将带有基本字段的可重复使用WFFM表单添加到“插入选项”

时间:2012-03-26 17:53:02

标签: sitecore web-forms-for-marketers

目前,templates \ wffm \ forms文件夹具有“表单文件夹”等插入选项。 “表格”对象。这对于使用基本“表单”模板的人来说非常棒。在我的情况下,我有些人想要使用带有隐藏字段的基本付款表单以及我创建的其他操作。

我想将自定义表单“MyPaymentForm”添加到“插入选项”中,以便所有表单用户选择它作为基本表单。问题是这是一个包含字段而不是模板的表单,因此“插入选项”不允许我添加它。

  • 我希望我的基本字段的付款表单成为使用它的每个组的模板。例如,所有人都将使用基本字段,但也会有与其部门相关的自定义字段。

你能推荐一种方法,我可以向用户提供“MyPaymentForm”,以便它可以重复用于不同的群体吗?

谢谢, 克里斯

1 个答案:

答案 0 :(得分:1)

我建议使用命令模板来完成你的要求。命令模板本质上是一些可以分配给插入选项的自定义逻辑。

在您的情况下,您可以创建名为“MyPaymentForm”的命令模板(或您提出的任何内容),然后将该命令模板分配给您希望的任何模板/项目的“插入选项”字段。当用户右键单击“插入 - >”时并且您的命令模板可用,用户可以单击您的“MyPaymentForm”命令模板,您的自定义代码将被执行。

命令模板背后的操作可以像创建基本表单的副本并将其插入用户执行命令模板的内容树中一样简单。

以下是可以完成您所需要的命令模板代码示例。这是完全未经测试的,但概念就在那里。

namespace MyNameSpace
{
    public class CopyPaymentFormCommand : Sitecore.Shell.Framework.Commands.Command
    {
        public override void Execute(Sitecore.Shell.Framework.Commands.CommandContext context)
        {
            if (context.Items.Length == 0)
                return;

            Sitecore.Data.Items.Item destinationItem = context.Items[0];
            if (destinationItem == null)
                return;

            //retrieve the base MyPaymentForm item
            Sitecore.Data.Items.Item myPaymentForm = destinationItem.Database.GetItem("MyPaymentForm GUID");
            if (myPaymentForm == null)
                return; // instead of just exiting here, you may want to log an error first

            //copy the MyPaymentForm item to the location in the content tree from which the command template was triggered
            Sitecore.Data.Items.Item copyOfMyPaymentForm = myPaymentForm.CopyTo(destinationItem, "MyPaymentForm");

            //perform any necessary post-processing of your newly copied item
        }
    }
}

创建自定义代码后,您需要连接Sitecore以识别并使用您的命令。

1。将“command”元素添加到文件/App_Config/Commands.config中,如下所示:

<command name="mycustomcommands:forms:copypaymentform" type="MyNamespace.CopyPaymentFormCommand, MyAssemblyName" />

2. 接下来,在/ sitecore / Templates部分中创建一个命令模板项。您可以通过右键单击/ sitecore / Templates下的相关文件夹并使用Insert-&gt; Insert From Template,然后选择“/ sitecore / Templates / System / Branches / Command Template”数据模板来完成此操作。

3. 接下来,在新创建的“命令模板”项中,使用以下文本填充“命令”字段(包含在“数据”部分中): mycustomcommands:形式:copypaymentform(ID = $ PARENTID) 注意:命令名称与Commands.config文件中定义的命令名称相匹配

4. 您现在拥有一个可以指定为插入选项的命令模板。为此,只需编辑所选模板的__Standard Values项,然后选择Assign Insert Options。在“插入选项”对话框中,浏览到您创建的“命令模板”项,并将其添加到“选定”插入选项列表中。

现在,当用户尝试使用包含命令模板插入选项的模板在项目下插入新项目时,他们可以选择单击您的命令模板。这样做会触发您的命令模板代码,该代码将在用户执行命令的位置创建付款表单的副本。

有关命令模板的更多信息,请参阅SDN上的此文档(特别是第4章):http://sdn.sitecore.net/upload/sitecore6/datadefinitioncookbook-usletter.pdf

希望这有帮助!