Определение сайта WSS 3.0 прерывается при включении MasterUrl в onet.xml - PullRequest
1 голос
/ 15 января 2010

Я создал простое определение сайта для 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 Ответ

2 голосов
/ 15 января 2010

Моя первая мысль была: почему в onet.xml?

Обычно я делаю это с помощью процесса, называемого сшивание объектов. Позже невозможно удалить / отключить функциональность, созданную из определения сайта (конечно, вы можете вручную, или функция + получатель для удаления, скажем, списка, который вам не нужен для определенного сайта, созданного из файла onet.xml, но вы, наверное, поняли)

При использовании сшивания функций определение (ваш / the) сайта остается чистым и остается тем, чем оно должно быть: определение сайта, которое можно выбрать при создании сайта. ИМХО, это должен быть не более чем пустой контейнер.

Функция сшивания привязывает функции, которые вы хотите активировать при создании сайта, к (пользовательскому) сайту ШАБЛОН. Вы даже можете использовать это для добавления функций, которые вы хотите активировать, а также из готовых определений сайтов. Например, сшивание функций является предпочтительным способом включения функций в определениях «MySite» и «My Site Host». Исходное определение сайта остается нетронутым, но ваши функции тоже активированы!

Теперь, чтобы действительно ответить на ваш вопрос: главная страница, вероятно, еще не доступна, когда используется определение сайта, onet.xml обрабатывается до того, как активируются какие-либо функции.

Если ваш сайт является сайтом публикации (то есть функции, связанные с публикацией, активированы в семействе сайтов), вы можете установить главную страницу в функции публикации с помощью свойства ChromeMasterUrl.

Если сайт является обычным сайтом, вы можете сделать 2 вещи:

  • разверните главную страницу из onet.xml, переместив <Module> из функции главной страницы в onet.xml, дополнительную информацию здесь (рисунок 1).
  • не устанавливайте URL главной страницы в onet, но используйте функцию + featurereceiver для установки URL главной страницы, дополнительная информация здесь (загружаемый код в статье).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...