Добавить ссылку на ленту Sitecore 7

Я хочу добавить кнопку на ленту редактора страницы sitecore, и я хочу, чтобы она работала как ссылка. Например, когда я нажимаю эту кнопку, страница должна быть перенаправлена ​​на HOMEURL/sample.aspx.

Я написал класс, который наследуется от Command.

public class addlink : Command
{
    public override void Execute(CommandContext context)
    {
        Sitecore.Web.WebUtil.Redirect("/sample.aspx");
    }
}

Затем для этого элемента ленты webedit в базе данных ядра я указал в качестве события клика webedit:addlink. Событие onclick этой ссылки в браузере — javascript:return scForm.invoke('webedit:addlink', event).

Так что редирект не происходит. Как добавить ссылку на ленту редактора страниц? Я был бы признателен за любые предложения по улучшению моего класса или других подходов.

спасибо


person EngelbertCoder    schedule 30.12.2013    source источник


Ответы (2)


Вам необходимо зарегистрировать вашу команду в конфигурации Sitecore. Либо создайте свой собственный MyCommands.config файл в App_Config/Include с содержимым:

<configuration>
  <command name="webedit:addlink" type="My.Assembly.Namespace,My.Assembly"/>
</configuration>

или обновите один из существующих файлов с определением команды.

ИЗМЕНИТЬ В ОТВЕТЕ НА ВАШ КОММЕНТАРИЙ:

Причина, по которой ваш код не работает, заключается в том, что вы пытаетесь перенаправить ответ вызова POST, который запрашивается при нажатии кнопки. Что вам нужно сделать, так это зарегистрировать javascript, который будет перенаправлять родительское окно после возврата ответа от Sitecore, например TwentyGotoTen написал в своем посте ниже.

public override void Execute(CommandContext context)
{
    Sitecore.Web.UI.Sheer.SheerResponse
        .Eval("window.top.location.href='http://google.com';");
}
person Marek Musielak    schedule 30.12.2013
comment
Я уже сделал это. Команда работает. Шаги отладки в него. Команда перенаправления выполняется. Но редирект не происходит. Страница не может как-то выйти из контекста страницы. - person EngelbertCoder; 30.12.2013
comment
Спасибо Марас. Это решило мою проблему. У меня есть еще один связанный с этим вопрос. Как я могу передать параметр команде. sample.aspx должен быть параметром команды. Я попытался выполнить webedit:addlink(target=sample.aspx) в событии щелчка команды, но я не вижу параметр в контексте команды. - person EngelbertCoder; 07.01.2014
comment
Я проверил с webedit:addlink(url=http://google.co.uk) - работает. Я могу получить доступ к этому значению, используя context.Parameters["url'] - person Marek Musielak; 07.01.2014

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

SheerResponse.Eval("window.parent.location.href='/sample.aspx';");
person Martin Davies    schedule 30.12.2013