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