2016-11-11 4 views
2

В Kentico 9, нуждается в руководстве, чтобы достичь следующего сценария:Кентико 9 - Нанести сортировка по содержимому дерева на основе настраиваемого поля

У меня есть пользовательский тип страницы, как «назначения», в котором у меня есть пользовательские поля с именем " Назначенная дата". Я создал папку в дереве контента с именем «Все встречи», под которой была создана какая-то папка в течение многих лет, например, 2016,2015 и т. Д.

Теперь, когда я добавляю тип «Назначение» под годовой папкой типа «2016», , Мне нужно, чтобы ti вставлял Order by "AppointmentDate" в дерево. Как следует

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

Так что, если теперь добавить новое назначение с именем, как «App4», где множество «AppointmentDate поля = 11 июня 2016», поэтому он должен быть вставить между Ар2 и Ap3 под деревом содержимого в панели администратора.

Надеюсь, что с моим запросом ясно.

Заранее спасибо.

ответ

3

Вы можете attach к глобальному событию

DocumentEvents.Create.After += Document_Create_After; 

и в документе создать после проверки методы для пути вашей страницы и желаемого типа страницы. Если `s узел вам нужно заказать (находится в надлежащем поддереве, вроде правильного типа страницы и т.д.) просто использовать

CMS.DocumentEngine.TreeProvider.MoveNodeDown 

или

CMS.DocumentEngine.TreeProvider.MoveNodeUp 

в зависимости от вашего поля и заказ требований.

+0

Привет, Мартин, Спасибо за ваш быстрый ответ. Я знаю с привязкой к глобальному событию, но путают, как применять сортировку по узлам дерева, чтобы сделать это заказ по определенному полю или как вставить новый узел либо выше, либо ниже, как указано сейчас. Также относительно API «CMS.DocumentEngine.TreeProvider.MoveNodeDown», кажется, удалено в K9 из класса TreeProvider. как получение только этого метода в классе DocumentHelper «DocumentHelper.MoveDocument (newnode, targetnode)»; Пожалуйста, исправьте меня, если я ошибаюсь. –

+0

Возможно, вы можете использовать метод CMS.DocumentEngine.TreeProvider.SetNodeOrder (TreeNode, Int32) и просто узнать, сколько назначений назначено на дату раньше нового документа (если есть 3 новых назначения, а затем установите порядок узлов на 3). Я не уверен, является ли порядок 0 основанием или нет, я бы так подумал, но он может быть основан на 1, поэтому вам, возможно, потребуется протестировать и настроить! –

+0

Извините за мой поздний ответ - Тревор прав - это единственный подход, с которым я знаком, чтобы добиться желаемого поведения, спасибо Travor за разъяснение. –

 Смежные вопросы

  • Нет связанных вопросов^_^