Добавить многоразовую форму WFFM с базовыми полями в Параметры вставки - PullRequest
0 голосов
/ 26 марта 2012

В настоящее время в папке templates \ wffm \ forms есть параметры вставки, такие как «Папка формы» и объект «Форма». Это отлично подходит для людей, которые используют базовый шаблон «Форма». В моем случае у меня есть люди, которые хотели бы использовать базовую форму оплаты со скрытыми полями и другими действиями, которые я создал.

Я хотел бы добавить свою настраиваемую форму «MyPaymentForm» в «Параметры вставки», чтобы она отображалась для всех пользователей формы в качестве базовой формы. Проблема в том, что это форма с полями, а не шаблон, поэтому параметры вставки не позволят мне добавить ее.

  • Я бы хотел, чтобы моя форма оплаты с базовыми полями была шаблоном для каждой группы, которая ее использует. Например, все будут использовать базовые поля, но также будут иметь настраиваемые поля по отношению к своему отделу.

Можете ли вы порекомендовать, как я могу подать «MyPaymentForm» пользователям, чтобы его можно было повторно использовать для разных групп?

Спасибо, Chris

1 Ответ

1 голос
/ 27 марта 2012

Я бы порекомендовал использовать шаблон команд для выполнения того, что вы просите.Шаблон команды - это, по сути, немного пользовательской логики, которую можно назначить параметрам вставки.

В вашем случае вы можете создать шаблон команды с именем «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 / Раздел шаблонов.Это можно сделать, щелкнув правой кнопкой мыши соответствующую папку в / sitecore / Templates и используя Вставить-> Вставить из шаблона, затем выберите шаблон данных «/ sitecore / Templates / System / Branches / Command Template».

3. Затем в только что созданном элементе «Шаблон команды» заполните поле «Команда» (содержащееся в разделе «Данные») следующим текстом: mycustomcommands: forms: copypaymentform (id = $ ParentID) примечание:Имя команды совпадает с именем команды, определенным в файле Commands.config

4. Теперь у вас есть шаблон команды, который можно назначить в качестве параметра вставки.Для этого просто отредактируйте элемент __Standard Values ​​любого выбранного вами шаблона и выберите Assign Insert Options.В диалоговом окне «Параметры вставки» перейдите к созданному вами элементу «Шаблон команды» и добавьте его в список «Выбранных» параметров вставки.

Теперь, когда пользователь пытается вставить новый элемент под элементом с шаблономс опцией вставки шаблона вашей команды, у них будет возможность нажать на шаблон вашей команды.Это приведет к запуску кода шаблона вашей команды, который, в свою очередь, создаст копию формы оплаты в том месте, откуда пользователь выполнил команду.

Для получения дополнительной информации о шаблонах команд см. Этот документ в SDN.(в частности, глава 4): http://sdn.sitecore.net/upload/sitecore6/datadefinitioncookbook-usletter.pdf

Надеюсь, это поможет!

...