0
A
回答
1
您可以創建一個事件處理程序,在創建新節點時更改節點的排序順序。有關實現您自己的處理程序的更多詳細信息,請參見Application startup events & event registration。
粗糙未經測試的例子,我相信你可以做更多的優雅,但應該指向你在正確的方向:
public class YourApplicationEventHandlerClassName : ApplicationEventHandler
{
protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
ContentService.Created += ContentServiceCreated;
}
private void ContentServiceCreated(IContentService sender, NewEventArgs<IContent> e)
{
var cs = ApplicationContext.Current.Services.ContentService;
var content = e.Entity;
var parentNode = content.Parent();
content.SortOrder = parentNode.Children().OrderBy(n => n.SortOrder).First().SortOrder - 1;
cs.Save(content);
}
}
1
的ContentService.Created
事件並沒有爲我工作。採取了一些戰鬥,但在Umbraco
v7
,我已經使用了ContentService.Saved
事件代替,用髒性能有一定的雙重檢查,以確保您在節省無限循環不結束:
private void ContentSaved(IContentService sender, SaveEventArgs<IContent> e)
{
foreach (var content in e.SavedEntities)
{
var dirty = (IRememberBeingDirty)content;
var isNew = dirty.WasPropertyDirty("Id");
if (!isNew) return;
var parentNode = content.Parent();
if (parentNode == null) return;
var last = parentNode.Children().OrderBy(n => n.SortOrder).FirstOrDefault();
if (last != null)
{
content.SortOrder = last.SortOrder - 1;
if (content.Published)
sender.SaveAndPublishWithStatus(content);
else
sender.Save(content);
}
}
}
public class AppStartupHandler : ApplicationEventHandler
{
protected override void ApplicationInitialized(UmbracoApplicationBase umbracoApplication,
ApplicationContext applicationContext)
{
ContentService.Saved += ContentSaved;
}
}
相關問題
- 1. 如何一把umbraco創建一個虛擬節點
- 2. 的Global.asax在一把umbraco 6
- 3. 一把umbraco - 讀節點
- 4. 一把umbraco節點和inode
- 5. 一把umbraco站點部署
- 6. 在一把umbraco創建文件夾 - 一把umbraco 7
- 7. 在umbraco中創建默認子節點到節點
- 8. 通過Razor創建新節點(在Umbraco中)
- 9. 如何將節點放置在neato圖的頂部?
- 10. 如何發佈節點但不在Umbraco中創建鏈接
- 11. 如何在OrientDB中創建頂點並創建頂點
- 12. 一把umbraco 7:如何獲得在佈局(.cshtml)子節點
- 13. 使用graphviz創建節點的頂部標籤(點)
- 14. 如何添加新的節點在頂部ui-tree angular js
- 15. Umbraco,創建節點,可用節點類型列表
- 16. 如何把廣告放在頂部我的網站在谷歌?
- 17. 如何在umbraco 6的管理面板中創建自定義部分?
- 18. 如何使用.net用戶控件創建Umbraco內容節點?
- 19. CSS把圖片放在頁面頂部
- 20. 在umbraco中的節點內部嵌入節點
- 21. CSS3:如何把東西放在第二列的頂部?
- 22. 如何把layoutview中的textview和edittext頂部放在列表中
- 23. 如何把項目放在隊列的頂部python?
- 24. 如何把行放在mysql查詢的頂部。
- 25. 內建一把umbraco
- 26. 如何在一把umbraco 4
- 27. 如何一把umbraco
- 28. 如何一把umbraco
- 29. 如何在Umbraco 6.X中創建繼承成員類型?
- 30. 如果存在子節點,則創建新的XML節點
除上面的例子你最好先檢查父節點是否有子節點,否則你會得到一個空引用異常。 – ProNotion
謝謝你。但是什麼時候該函數會被執行?我沒有在您提供的鏈接的任何地方看到ContentServiceCreated? – Aximili
您不會在文檔中找到它,因爲EventHandlers的實現取決於您,您以與其他任何事件相同的方式訂閱它們。我用更完整的例子更新了我的答案。如事件名稱所示,在創建ANY節點時執行。 – ProNotion