Веб-часть по умолчанию в зоне веб-части для макета страницы
-
16-10-2019 - |
Вопрос
Как настроить веб-часть так, чтобы она автоматически добавлялась в зону веб-части при выборе определенного макета страницы?
Решения, которые я пробовал до сих пор:
- С использованием
<ZoneTemplate>
под<WebPartZone>
и помещаю туда свою веб-часть - Добавление .webpart-кода непосредственно в
<AllUsersWebPart>
где я определяю макет страницы в elements.xml - Программное размещение веб-части в макетах страниц при создании структуры сайта (скрипт развертывания).
- Добавьте перехватчик, который подключается и добавляет веб-часть.
Проблемы с решениями:
- Веб-часть становится статической и не может быть удалена после создания.
- придется поместить код .webpart как в файл .webpart, так и в elements.xml (я хочу, чтобы он был автономным и был установлен по умолчанию).И навел беспорядок в моем elements.xml.
- Веб-часть будет развернута только в первый раз, поэтому при создании новой страницы с макетом страницы веб-часть не будет включена.
- Не знаем как это сделать, так как макет страницы установлен после создание страницы.У нас есть перехватчики для настройки макета страницы по умолчанию в зависимости от того, где в структуре создается страница. Здесь мы также можем добавить веб-часть, но тогда веб-часть будет добавлена только в том случае, если вы создадите страницу в определенном месте.
Решение
Поскольку вы используете SP2010, вы сможете использовать WebProvisioned событие для подключения дополнительных функций, таких как тот, который вы просите.
В SP2007 я бы использовал любой из упомянутых выше методов в зависимости от того, что мне нужно.Последнего я бы достиг, используя специального поставщика услуг.Посмотрите мой другой пост на эту тему здесь.
Другие советы
Я использовал ваш метод 1.и 2.обширно.Я не могу понять проблему, которую вы описываете для решения 1.Кроме того, имеются оба решения (1.и 2.) недостаток, заключающийся в том, что все веб-части дублируются каждый раз, когда функция развертывания макетов страниц повторно активируется, и вам нужен код очистки, чтобы это исправить.
Я использовал способ номер 1 (в исходном сообщении), и он работает отлично.Веб-части не становятся статическими, если вы не определили свойства веб-части, запрещающие перемещение или закрытие веб-части, или если у вас недостаточно разрешений.