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.