2016-11-11 4 views
2

を適用します。Kentico 9 - 次のシナリオを実現するためのガイダンスを必要とし、カスタムフィールドに基づいて、コンテンツツリーのソートKentico 9で

私は名前のカスタムフィールドを持っている「予定」 "のようなカスタム・ページ・タイプを持っています予約日"。コンテンツツリーに2016,2015などのフォルダを作成したフォルダの下に「すべての予定」という名前のフォルダを作成しました。

「2016」のような年のフォルダの下に「予定」タイプを追加すると、 、私は木の "予定"によって挿入注文する必要があります。今、「APP4」のような名前で新しい予定を追加した場合と同様に

- All Appointments 
---- 2016 
-------- Ap1 (AppointmentDate fields = 5 May 2016) 
-------- Ap2 (AppointmentDate fields = 6 Jun 2016) 
--------- Ap3 (AppointmentDate fields = 25 Jun 2016) 

だから、次の場所を設定し、「AppointmentDateフィールド= 2016年6月11日」とは、管理パネルでコンテンツツリーの下にAP2とAP3の間に挿入する必要がありますので。

私の質問ではっきりしています。

ありがとうございます。

答えて

3

あなたは、グローバルイベントにattach

DocumentEvents.Create.After += Document_Create_After; 

と文書では、あなたのページと、目的のページタイプのパスのための方法を確認した後に作成することができます。あなたが注文する必要があるそれ `sノードがいる場合(適切なサブツリーである、などの適切なページタイプの一種である)自分のフィールドに依存し、要件を注文

CMS.DocumentEngine.TreeProvider.MoveNodeDown 

または

CMS.DocumentEngine.TreeProvider.MoveNodeUp 

を使用しています。

+0

こんにちはマーティン、お返事ありがとうございます。 グローバルイベントを付けることに気づいていますが、ツリーノードの並べ替えを行う方法を混乱させることは、特定のフィールドによる並べ替え、または指定したノードの上か下への新しいノードの挿入方法です。 "CMS.DocumentEngine.TreeProvider.MoveNodeDown" APIに関しても、K9ではTreeProviderクラスから削除されたようです。 DocumentHelperクラス "DocumentHelper.MoveDocument(newnode、targetnode);"でこのメソッドだけを取得する 私が間違っている場合は私を修正してください。 –

+0

CMS.DocumentEngine.TreeProvider.SetNodeOrderメソッド(TreeNode、Int32)を使用して、新しいドキュメントよりも前の日付の予定がいくつあるかを調べることができます(3つの新しい予定がある場合は、ノードの順序を3に設定します) )。注文が0ベースかどうかはわかりませんが、私はそう思うでしょうが、1ベースかもしれないので、テストし調整する必要があります! –

+0

私の遅い答えに申し訳ありません - Trevorは正しい - これは私があなたの望ましい行動を達成するために慣れている唯一のアプローチです、明確化のためにTravorに感謝します。 –

関連する問題