Как в Sitecore 6 открыть элемент контента в редакторе контента из пользовательского приложения Sitecore?

У меня есть пользовательское приложение Sitecore, которое в основном представляет собой экран поиска. Я хотел бы, чтобы пользователь мог щелкнуть ссылку в результатах поиска и открыть этот элемент контента в редакторе контента. Кто-нибудь знает как это сделать?


person Corey Burnett    schedule 13.05.2013    source источник


Ответы (3)


Что вам нужно сделать, так это использовать параметр fo с идентификатором элемента в качестве значения параметра в конце пути к редактору содержимого, например:

http://localhost/sitecore/shell/Applications/Content%20Editor.aspx?fo={4142d44b-2237-4795-b219-85e70420fced}

Редактировать после комментария: если вы хотите запустить новое приложение с редактором контента в Sitecore, вы можете использовать метод:

Sitecore.Text.UrlString parameters = new Sitecore.Text.UrlString();
parameters.Add("id", item.ID.ToString());
parameters.Add("fo", item.ID.ToString());
Sitecore.Shell.Framework.Windows.RunApplication("Content Editor", parameters.ToString());

Это описано в сообщении Запуск редактора контента из кода.

А вот еще одно решение Марка Урсино, которое делает то же самое, используя события javascript onclick: http://firebreaksice.com/link-directly-to-a-sitecore-item-in-a-custom-editor/

person Marek Musielak    schedule 13.05.2013
comment
Это работает. Однако он открывает редактор контента в окне моего пользовательского приложения в Sitecore. Поэтому, когда я открываю свое пользовательское приложение, оно появляется в своем собственном окне. Когда я нажимаю на ссылки, они открываются в том же окне. Если это вообще возможно, я хотел бы открыть приложение Content Editor в Sitecore и сделать так, чтобы оно было на нужном элементе. - person Corey Burnett; 13.05.2013
comment
Нет. Я получаю следующую ошибку: Параметр с именем Command не может быть нулевым. Когда я смотрю на трассировку стека, здесь возникает исключение: Sitecore.Web.UI.Sheer.SheerResponse.Broadcast (команда ClientCommand, String frameName) +407 - person Corey Burnett; 13.05.2013
comment
Я запускаю код, который вы предоставили в коде для моего пользовательского приложения. - person Corey Burnett; 13.05.2013
comment
Похоже, что пример кода, на который вы ссылались в другом посте, настроен для работы с командой. Я пытаюсь заставить это работать из некоторого кода в пользовательском приложении. Но, может быть, я смогу выяснить, как сделать это в Команде. - person Corey Burnett; 14.05.2013
comment
Я понятия не имею, почему это не работает для вас, но я добавил еще один способ добиться того, что вам нужно, к ответу. - person Marek Musielak; 14.05.2013
comment
Ну, я думаю, что это не работает, потому что я не запускаю этот код из команды. И да, я также видел эту ссылку на решение JS. Однако это решение JS предполагает, что я пытаюсь связать элемент из пользовательского редактора в Sitecore. Вот почему scForm работает. На моем экране это не сработает. Я не создаю пользовательский редактор. У меня есть простое пользовательское приложение Sitecore, которое запускает страницу ASPX в своем собственном окне. - person Corey Burnett; 14.05.2013
comment
Ваш первоначальный ответ сработал. Мне просто нужно было установить цель ссылки на _parent. Как только я это сделал, он в основном заменил пользовательское приложение редактором контента. Спасибо! - person Corey Burnett; 14.05.2013

У Джона Уэста есть полезная информация здесь: http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/08/Load-or-Reload-an-Item-in-the-Sitecore-ASPNET-CMS.aspx

Открытие нового окна редактора контента можно выполнить с помощью URL-адреса в следующем формате: /sitecore/shell/sitecore/content/Applications/Content Editor.aspx?id={0}&fo={0}&la={1} &вер={2}

person regardsitecore    schedule 14.05.2013
comment
Это тоже не работает. Он открывает редактор содержимого с выбранным элементом. Но он открывает его в том же окне, что и пользовательское приложение. Я думаю, что это будет сбивать с толку пользователя, когда он увидит окно под названием «Мое пользовательское приложение», внутри которого открыт редактор контента. Надеюсь, я пытаюсь найти решение, которое открывает новое окно Sitecore. - person Corey Burnett; 14.05.2013
comment
Я понял!. Я использовал ссылку, которую вы предоставили, и я просто установил цель ссылки на _parent. Таким образом, он в основном заменяет пользовательское приложение редактором контента. Таким образом, пользовательское приложение закрывается, а редактор содержимого открывается в том же окне. Идеально! Спасибо. - person Corey Burnett; 14.05.2013

Я создал простой метод расширения, который сейчас работает в Sitecore 6.5. Я не тестировал его в других версиях Sitecore.

public static string ContentEditorUrl(this Item item)
{
    return string.Format("{0}/sitecore/shell/Applications/Content%20Editor.aspx?fo={1}", 
        HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority), item.ID);
}
person Jon-YYC    schedule 12.12.2014