Sitecore 7 - 在弹出模式中使用 Web Forms for Marketers Form

Sitecore 7 - Use Web Forms for Marketers Form in popup modal

我正在 Sitecore 7.2 网站上使用已安装的 Web Forms for Marketers 模块和该网站拥有的 fancybox 插件(该网站使用的是 fancybox 1.3.4 版,我无法更新此版本,否则可能会破坏网站上使用此插件的其他功能)。

表单应该是这样工作的:用户单击页面上的 link,这会打开一个弹出窗口 window,其中包含他们必须填写的表单,然后才能访问下载.

到目前为止,我已经完成了一些工作,因此当在页面上单击 link 时,fancybox 模态将打开并显示 WFFM 表单。

这是执行此操作的 jQuery:

jQuery.noConflict();
(function($) {
    $(document).ready(function() {
        // Open the gateway form into a fancybox modal

        //check to see if there is a gateway form link on the page
        if ($(".protected-item").length > 0) {

            //if so, then we want to target the click event
            $('.protected-item').click(function(event) {
                event.preventDefault();
                //Get the value of the href of the link since this url will contain the page with the gateway form
                var url = $('.protected-item').attr('href');

                //open the page with the gateway form in the fancybox modal
                $.fancybox({
                    'autoDimensions': true,
                    'height': 400,
                    'width': 400,
                    'scrolling': 'no',
                    'href': url,
                    'autoScale': true,
                });

            });
        }
    });
})(jQuery);

我所做的是在 Sitecore 中创建了一个通用页面(我在网关表单测试页面中调用)并将测试网关表单插入到其中。然后,在我想要展示网关表单的页面上,我已经 link 编辑了一些文本 ("click here") 到该网关表单测试页面。

问题是,在点击 WFFM 表单的提交按钮后,页面将我发送到表单所在的 url(即 domainname/OtherPages/GatewayFormTestPage.aspx),而不是重新加载fancybox window 并在未填写所有字段时显示成功消息或错误消息。

我尝试将 fancybox 模态的类型设置为 'iframe',但所做的只是呈现一个空的弹出窗口(fancybox-content 块中也没有显示任何内容——我检查了 Chrome 的开发工具)。

有没有一种方法可以将 WFFM 表单包装在 iframe 中,这样我就可以避免在单击时转到另一个页面 "submit?" 我希望用户始终停留在弹出模式中。

谢谢,我知道这可能是一个复杂的过程,我希望我能选择一个更好的解决方案,但这是我必须解决的问题。

我认为使用 iframe 不适合您的任务。最好使用 AJAX 请求而不是 iframe。

您应该在表单项上选中 "Is Ajax Mvc Form" 以仅重新加载表单而无需页面回发。它将允许您在不完全重新加载页面的情况下获得表单更新。

如果您使用的是 WebForms(不是 MVC),那么您可以将 WFFM 表单包装到更新面板中。(对于性能和透明度不是很好)

关于使用 WFFM 的提示:您应该仅在 fields/actions 将由营销人员管理的情况下使用它。您不需要将它用于网站上的所有表格。确保这不是你的情况。