Freigeben über


How does SPSPORTAL provision without a folder?

After seeing the templateID detail (blogs.msdn.com/dwinter/archive/2006/07/07/659613.aspx) varkalav wanted to know since there is no SPSPORTAL folder in the 12\TEMPLATE\SiteTemplates folder, how does it map...   Here is my response:

Just follow the path that the product does.  When we load, we deserialize all of the information in the webtemp*.xml files.  This truely is the starting point for templates.  Let's follow the path together for the item in question:

\12\TEMPLATE\1033\XML\webtempsps.xml:
================================
<Template Name="SPSPORTAL" ID="47">
    <Configuration ID="0" Title="Collaboration Portal" Type="0" Hidden="FALSE" ImageUrl="/_layouts/1033/images/template_corp_intranet.png" Description="A starter site hierarchy for an intranet divisional portal. It includes a home page, a News site, a Site Directory, a Document Center, and a Search Center with Tabs. Typically, this site has nearly as many contributors as  readers and is used to host team sites."
ProvisionAssembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"  ProvisionClass="Microsoft.SharePoint.Publishing.PortalProvisioningProvider"  ProvisionData="SiteTemplates\\WebManifest\\PortalWebManifest.xml"
      RootWebOnly="TRUE" DisplayCategory="Publishing" VisibilityFeatureDependency="97A2485F-EF4B-401f-9167-FA4FE177C6F6">
    </Configuration>
 </Template>

The key item here is to notice the ProvisionData attribute.  So lets take a look at
\12\TEMPLATE\SiteTemplates\WebManifest\portalwebmanifest.xml:
=================================================
<portal xmlns="PortalTemplate.xsd">
    <web name="Home" siteDefinition="SPS" displayName="$Resources:spscore,PortalManifest_Home_DisplayName;" description="$Resources:spscore,PortalManifest_Home_Description;">
        <webs>
        .
        .
        .

It then goes on to define the subwebs, but what you'll see here is that the root is actually defined with the SPS site definition.  That is why you don't see a SPSPORTAL folder--because we are using the SPS folder.  Do keep in mind however that as we have ProvisionData, we also have a ProvisionClass driving the provisioning of this definition.  So its not as simple as "we just use the SPS Site definition.  In Microsoft.SharePoint.Publishing.PortalProvisioningProvider, there is specific internal code driving many other actions that take place as a part of provisioning a SPSPORTAL site.