0

Umbraco 6 では、新しいノードを作成すると、一番下に配置されます。
一番上にしたい場合は、手動で並べ替える必要があります。

デフォルトで新しいノードを一番上に表示するにはどうすればよいですか?

4

2 に答える 2

1

新しいノードの作成時にノードの並べ替え順序を変更するイベント ハンドラーを作成できます。独自のハンドラーを実装する方法の詳細については、アプリケーションの起動イベントとイベントの登録を参照してください

よりエレガントにすることができると確信していますが、正しい方向に向ける必要がある大まかなテストされていない例:

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);
    }
}
于 2014-02-26T08:09:44.450 に答える
1

ContentService.Createdイベントは私にはうまくいきませんでした。いくつかの戦いがありましたが、v7ofUmbracoでは、代わりにイベントを使用し、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;
    }
}
于 2016-07-25T14:03:22.810 に答える