Я бы порекомендовал использовать шаблон команд для выполнения того, что вы просите.Шаблон команды - это, по сути, немного пользовательской логики, которую можно назначить параметрам вставки.
В вашем случае вы можете создать шаблон команды с именем «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
Надеюсь, это поможет!