Определение сайта WSS 3.0 прерывается при включении MasterUrl в onet.xml
Я создал простое определение сайта для WSS 3.0, в котором используется функция, которая обеспечивает создание главной страницы в галерее мастер-страниц.
Это работает абсолютно нормально, и как только я создал сайт из определения, я могу зайти в галерею главной страницы и просмотреть свой подготовленный файл.
Однако, если я установлю MasterUrl в своем узле конфигурации в onet.xml, а затем создаю новый сайт на нем, произойдет сбой. После нажатия кнопки "Создать" он автоматически перенаправляет меня на новый сайт, но выдает ошибку "Файл не найден". Поэтому я набираю URL-адрес страницы настроек и нажимаю, чтобы просмотреть галерею мастер-страниц, которая затем выдает мне ошибку "файл не найден".
Я не уверен, что происходит, но мне кажется, что установка MasterUrl не позволяет ему создавать правильные списки, которым функция может предоставить мастер-страницу. Кто-нибудь может пролить свет на этот вопрос для меня, пожалуйста?
Вот webtemp *.xml:
<?xml version="1.0" encoding="utf-8"?>
<Templates>
<Template Name="MasterPageTest" ID="10902">
<Configuration ID="0"
Title="MasterPageTest"
Description="Testing master page deployment"
Hidden="FALSE"
ImageUrl="/_layouts/images/stsprev.png"
DisplayCategory="Test"
/>
</Template>
</Templates>
И файл onet.xml (с удаленным атрибутом masterurl):
<?xml version="1.0"?>
<Project Title="MasterPageTest" Revision="3" ListDir="$Resources:core,lists_Folder;" xmlns:ows="Microsoft SharePoint" xmlns="http://schemas.microsoft.com/sharepoint/">
<!-- _locID@Title="camlidonet1" _locComment="{StringCategory=HTX}" -->
<NavBars>
</NavBars>
<ListTemplates>
</ListTemplates>
<DocumentTemplates>
</DocumentTemplates>
<Configurations>
<Configuration ID="0"
Description="Testing master page deployment"
Title="Master Page Test"
Name="MasterPageTest"
>
<!-- MasterUrl="_catalogs/masterpage/MasterPage.master" -->
<Lists>
</Lists>
<Modules>
</Modules>
<SiteFeatures>
</SiteFeatures>
<WebFeatures>
<!-- Masterpage -->
<Feature ID="8175B375-38F5-44E2-950A-9600D5427E17"/>
</WebFeatures>
</Configuration>
</Configurations>
<Modules>
</Modules>
<ServerEmailFooter>$Resources:ServerEmailFooter;</ServerEmailFooter>
</Project>
1 ответ
Моей первой мыслью было: почему в onet.xml?
Я обычно делаю это, используя процесс под названием "Сшивание элементов". Позже невозможно удалить / отключить функциональность, созданную из определения сайта (конечно, вы можете вручную, или функция + получатель для удаления, скажем, списка, который вам не нужен для определенного сайта, созданного из файла onet.xml, но вы, наверное, поняли)
С помощью сшивания функций определение (ваш) остается чистым и остается тем, чем оно должно быть: определение сайта, которое можно выбрать при создании сайта. ИМХО, это должен быть не более чем пустой контейнер.
Сшивание объектов привязывает функции, которые вы хотите активировать при создании сайта, к (пользовательскому) сайту ШАБЛОН. Вы даже можете использовать это для добавления функций, которые вы хотите активировать, а также из готовых определений сайтов. Например, сшивание функций является предпочтительным способом включения функций в определениях "MySite" и "My Site Host". Исходное определение сайта остается нетронутым, но ваши функции также активированы!
Теперь, чтобы действительно ответить на ваш вопрос: главная страница, вероятно, еще не доступна, когда используется определение сайта, onet.xml
обрабатывается до активации каких-либо функций.
Если ваш сайт является сайтом публикации (то есть функции, связанные с публикацией, активированы в семействе сайтов), вы можете установить мастер-страницу в функции публикации с помощью ChromeMasterUrl
имущество.
Если сайт является обычным сайтом, вы можете сделать 2 вещи:
- развернуть главную страницу из
onet.xml
перемещая<Module>
от функции главной страницы доonet.xml
Более подробная информация здесь (рисунок 1). - не устанавливайте URL главной страницы в onet, но используйте функцию + featurereceiver для установки URL главной страницы, дополнительную информацию здесь (код для загрузки в статье).