2014-06-05 35 views
2

我已經實現了一個Sitecore saveUI處理器,用於將新聞項目移動到年/月層次結構內的特定位置。它很好地完成了這項工作,除了在頁面編輯器中使用(導航到項目頁面,然後嘗試保存並隱式移動項目)時,我被重定向到我們的404頁面,因爲Sitecore期望原始項目操作後url仍然有效。
有什麼辦法可以告訴Sitecore項目已被移動?我正在考慮SaveArgs中的某個屬性,但只要它有點可維護(例如,如果可能的話,我更喜歡服務器端解決方案,而不是基於JavaScript的客戶端解決方案),任何解決方案都可以。Sitecore saveUI處理器移動後重定向到項目頁面

回答

1

關閉我的頭頂,請確保您的處理器,最後一個在管道和下面的代碼添加到處理方法的末尾:

if(Sitecore.Context.PageMode.IsPageEditor) 
{ 
    var item = args.SavedItems.First() // or perhaps Context.Item; 
    var url = LinkManager.GetItemUrl(item); 
    HttpContext.Current.Response.Redirect(url); 
} 
+0

不幸的是,這似乎並沒有工作。我將處理器移動到列表的底部並添加了您所建議的更改,但我仍然被重定向到404頁面。 – Bogdan

+0

我認爲它應該是'HttpContext.Current.Response.Redirect(url);',來自馬丁的錯字毫無疑問。 – jammykam

+0

更新!沒有像編碼直接進入SO :-) –

0

您是否嘗試過使用Sitecore Newsmover Module? 這可以無縫工作,而且可以成爲創建自定義移動設備的方式。我們已經使用了這麼多次,它似乎在所有情況下運作良好。此

樣本配置:

<template id="User Defined/News Article" sort="Descending"> 
     <DateField>Posted Date</DateField> 
     <YearTemplate formatString="yyyy">User Defined/Folders/Article Year Folder</YearTemplate> 
     <MonthTemplate formatString="MMMM">User Defined/Folders/Article Month Folder</MonthTemplate> 
    </template> 
+0

謝謝,我一定會嘗試一下。目前,我已經取消了我的初始解決方案並實現了一個項目:爲新聞項目創建事件處理程序。這種方法的不足之處在於,它按照創建日期而不是所選新聞日期對新聞項目進行排序。我想我至少可以研究Newsmover模塊的代碼,以查看我最初實現中的錯誤。 – Bogdan