Sitecore 添加可重复使用的WFFM表单和基本字段以插入选项

Sitecore 添加可重复使用的WFFM表单和基本字段以插入选项,sitecore,web-forms-for-marketers,Sitecore,Web Forms For Marketers,目前,templates\wffm\forms文件夹具有插入选项,如“Form folder”和“Form”对象。这对于使用基本“表单”模板的人来说非常有用。在我的例子中,有人希望使用带有隐藏字段和我创建的其他操作的基本支付表单 我想将我的自定义表单“MyPaymentForm”添加到插入选项中,这样所有表单用户都可以选择它作为基本表单。问题是,这是一个带有字段的表单,而不是模板,因此“插入选项”不允许我添加它 我希望我的带有基本字段的付款单成为使用它的每个组的模板。例如,所有人都将使用基本字

目前,templates\wffm\forms文件夹具有插入选项,如“Form folder”和“Form”对象。这对于使用基本“表单”模板的人来说非常有用。在我的例子中,有人希望使用带有隐藏字段和我创建的其他操作的基本支付表单

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

  • 我希望我的带有基本字段的付款单成为使用它的每个组的模板。例如,所有人都将使用基本字段,但也将具有与其部门相关的自定义字段
你能推荐一种我可以向用户提供“MyPaymentForm”的方式,这样它就可以为不同的组重用吗

谢谢,
Chris

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

在您的情况下,您可以创建一个名为“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.在文件/App\u Config/Commands.Config中添加一个“command”元素,如下所示:

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

2。接下来,在/sitecore/Templates部分创建命令模板项。您可以通过右键单击/sitecore/Templates下的相关文件夹并使用Insert->Insert From Template,然后选择“/sitecore/Templates/System/Branchs/Command Template”数据模板来执行此操作

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

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

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

有关命令模板的更多信息,请参阅SDN上的本文档(特别是第4章):

希望这有帮助