Sharepoint: изменение макета страницы и типа контента для конкретной страницы

У меня есть макет страницы в развернутом мной решении. Макет страницы также связан с настраиваемым типом контента.

Я хочу обновить этот макет страницы и тип контента, но только для определенного места на сайте. Причина в том, что для важных «оперативных обновлений» мы хотим иметь возможность рассылать SMS подписанным пользователям (встроенная функция Sharepoint для списков), а также отправлять их по электронной почте.

Это работает следующим образом: я хочу добавить логическое поле, которое определяет, отправляются ли SMS или нет, и поле для ввода адресов электронной почты, которые вы хотите уведомить о сообщении.

До сих пор мой подход был таков:

  • Создайте приемник событий, который проверяет, выбраны / заполнены ли поля, и выполняет фактическую отправку.
  • Измените страницу макета, добавив 2 новых поля.
  • Измените тип содержимого с помощью 2 новых полей.

Однако я опасаюсь осложнений для остальной части сайта. На данный момент будущее использование макета страницы не является проблемой, только существующее использование.

Я знаю, что обновление типа контента с помощью определений XML не происходит автоматически, так что с этой стороны я в безопасности, но как мне сохранить страницу макета, «содержащуюся» на конкретной рассматриваемой странице?

РЕДАКТИРОВАТЬ: Как мне показать два поля только при редактировании страницы, а не при ее отображении? В настоящее время на моем сайте разработки форма редактирования отображается правильно, но когда я перехожу, чтобы показать страницу, он показывает «да», где находится логическое поле, и любые адреса электронной почты, введенные там, где поле электронной почты.


person Christian P.    schedule 17.11.2010    source источник


Ответы (1)


Вы уверены, что макет страницы связан с типом контента, и что это не страница, связанная с этим типом контента?

Если вы хотите, чтобы поля добавлялись автоматически, вы можете:

  1. Создайте собственный шаблон отрисовки, который будет использоваться формами New / Edit / Display для вашего списка (http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of- sharepoint-list-form-fields-часть-1.aspx)

  2. Создайте настраиваемый ListFieldIterator (или используйте тот, который используется по умолчанию), который будет автоматически подбирать новые поля в вашем типе контента (http://msdn.microsoft.com/en-us/library/aa543922.aspx)

  3. Используйте код в DLL для итерации по полям вашего типа контента и, таким образом, для создания необходимых элементов управления для вашей страницы целиком в коде. Если вы используете FieldControls (http://msdn.microsoft.com/en-us/library/dd571480.aspx), он автоматически создаст шаблон отрисовки по умолчанию для поля (т. Е. Отобразит переключатели, выпадающие списки, и т. д., как определено полями в типе контента).

В вашем EDIT, когда вы говорите «при редактировании страницы», я предполагаю, что вы имеете в виду «при просмотре страницы редактирования для списка», а не «при редактировании определения страницы в Sharepoint Designer».

Предполагая, что это предположение верно, вы можете сделать так, чтобы на странице редактирования для списка отображалось что-то совершенно отличное от страницы просмотра для списка (и от новой страницы для списка). Страницы по умолчанию определяются полностью отдельно и редактируются полностью отдельно. Однако, если вы используете что-то (например, ListFieldIterator), которое автоматически выбирает список полей для типа контента, вы можете создать настраиваемый элемент управления полем для полей, которые вы хотите скрыть, и иметь шаблон представления для набора элементов управления полем. ничего не отображать.

person CodeThug    schedule 17.11.2010
comment
Уточнения: макет страницы используется в качестве шаблона для всех новых страниц (или, по крайней мере, они выбирают этот макет), который определяет, что будет использоваться при просмотре и редактировании страницы - по крайней мере, таков результат. Каждое поле вставляется на страницу вручную, это не простая итерация по полям. - person Christian P.; 17.11.2010