- I was doing some work for a client and was thinking…. Site definitions are great.
- style=”font-size: 11pt; font-family: Calibri”>For each element already present in the file,
make sure to set the
/Project/ListTemplates/ListTemplate[Path]
attribute to the folder under the Lists directory where the original site definition
resides. For example, if referencing lists from the default Team Web Site site definition,
set the
/Project/ListTemplates/ListTemplate[Path]
attribute to
“STS”. - style=”font-size: 11pt; font-family: Calibri”>For each font-family: Calibri”> elements in the
file, add a
/Project/ListTemplates/ListTemplate
element to the destination
file
for each
/Project/ListTemplates/ListTemplate
element. Each new ListTemplate element will take this form:<ListTemplate Name=”Cache” DisplayName=”Cache” Type=”10000″ BaseType=”0″ Unique=”TRUE”
Hidden=”TRUE” DontSaveInTemplate=”TRUE” SecurityBits=”11″ Description=”List of meetings
attached to the workspace.” Image=”/_layouts/images/itgen.gif”></ListTemplate>I will refer to attributes from the
/Web/UserLists/List style=”font-size: 11pt; font-family: Calibri”> element we are converting through
the List[@source_attribute] style=”font-size: 11pt; font-family: Calibri”> notation and to attributes of the
/Project/ListTemplates/ListTemplate
we are generating through
the ListTemplate[@target_attribute] style=”font-size: 11pt; font-family: Calibri”> notation.Note: style=”font-size: 11pt; font-family: Calibri”> We are adding additional
/Project/ListTemplates/ListTemplate
elements to the new
ONET.XML style=”font-size: 11pt; font-family: Calibri”> file. We are not removing the default
/Project/ListTemplates/ListTemplate
elements already present
in the file.Note: style=”font-size: 11pt; font-family: Calibri”> We are creating list definition headers
in the ONET.XML file, but we have not yet created the list schemas behind the new
list definitions. For detailed steps on converting the list definition from the
site template manifest.xml to a site definition schema.xml file, take a look at
my previous blog entry. - style=”font-size: 11pt; font-family: Calibri”>Set font-family: Calibri”> to .
- style=”font-size: 11pt; font-family: Calibri”>Set font-family: Calibri”> toa
unique numeric value. I, and others, recommend starting at 10000.
Type style=”font-size: 11pt; font-family: Calibri”> attribute is optional in the
ONET.XML style=”font-size: 11pt; font-family: Calibri”> file, you will not be able to automatically
provision the list using
elements upon site creation unless you specify the
attribute. - style=”font-size: 11pt; font-family: Calibri”>Set font-family: Calibri”> to .
- style=”font-size: 11pt; font-family: Calibri”>Set font-family: Calibri”> to .
- style=”font-size: 11pt; font-family: Calibri”>Remove the default ONET.XML style=”font-size: 11pt; font-family: Calibri”> file. We will be creating a new one
based on the configuring of the site from the site template. - style=”font-size: 11pt; font-family: Calibri”>Create a new ONET.XML style=”font-size: 11pt; font-family: Calibri”> file.
- style=”font-size: 11pt; font-family: Calibri”>Set the font-size: 11pt; font-family: Calibri”>”Default” direction: ltr; font-family: Calibri; unicode-bidi: embed” type=”1″>
- style=”font-size: 11pt; font-family: Calibri”>Create a new style=”font-size: 11pt; font-family: Calibri”>For each custom created in step 3, create a
/Project/Configurations/Configuration/Lists/List style=”font-size: 11pt; font-family: Calibri”> element. You will now need to use
the optional Type attribute specified in step 3c.The newly created elements will take the following forms:
<List Title=”Cache” Type=”10000″ ></List>
Note: style=”font-size: 11pt; font-family: Calibri”> The next steps should be performed
for each newly created
/Project/Configurations/Configuration/Lists/List direction: ltr; font-family: Calibri; unicode-bidi: embed” type=”a”> - style=”font-size: 11pt; font-family: Calibri”>Set the font-size: 11pt; font-family: Calibri”>/Project/ListTemplates/ListTemplate[DisplayName] style=”font-size: 11pt; font-family: Calibri”>.
- style=”font-size: 11pt; font-family: Calibri”>Set the font-size: 11pt; font-family: Calibri”>/Project/ListTemplates/ListTemplate[Type] style=”font-size: 11pt; font-family: Calibri”>.
- style=”font-size: 11pt; font-family: Calibri”>Create a font-family: Calibri”> element in the new font-family: Calibri”> file.
- style=”font-size: 11pt; font-family: Calibri”>Create a direction: ltr; font-family: Calibri; unicode-bidi: embed” type=”a”>
- style=”font-size: 11pt; font-family: Calibri”>Set the font-size: 11pt; font-family: Calibri”>”DefaultHome” style=”font-size: 11pt; font-family: Calibri”>Set the font-size: 11pt; font-family: Calibri”>”WebPartPopulation”
- style=”font-size: 11pt; font-family: Calibri”>Clear out the old
- style=”font-size: 11pt; font-family: Calibri”>Create a font-family: Calibri”>element in the new
file.
They are extremely flexible. But, they can also be very time consuming to create.
Site templates are a little less desirable because they un-ghost pages. But, they
are so easy and quick to create. It would sure be nice if I could simply take a
site template and convert it to a site definition. Well, it turns out that it’s
not all that hard. There are quite a few steps to follow, but it’s a lot easier
than creating a site definition from scratch.
First, let’s get some prep-work done.
- style=”font-size: 11pt; font-family: Calibri”>Open the font-family: Calibri”> file in the site definition from which the template
manifest.xml style=”font-size: 11pt; font-family: Calibri”> file was created and copy it to a
destination directory
Important: style=”font-size: 11pt; font-family: Calibri”> Never modify the default ONET.XML
files distributed with SharePoint.
Now that our source and target files are setup, we can begin migrating our list
definitions.
- style=”font-size: 11pt; font-family: Calibri”>Set the font-family: Calibri”> to .
Make sure to remove any non-alpha characters from when converting the title to the
list name. For example, if the Title is ,
set the name to something like .
- style=”font-size: 11pt; font-family: Calibri”>Leave the font-family: Calibri”> and
elements as is.
With the list definitions migrated, we need to set up a site configuration to provision
our lists and a couple of modules to define the files and web parts our site will
use.
- style=”font-size: 11pt; font-family: Calibri”>Set the font-size: 11pt; font-family: Calibri”>”0″
.
- style=”font-size: 11pt; font-family: Calibri”>Add the following elements to the
/Project/Configurations/Configuration/Lists
element:
<List Title=”Site Template Gallery” Type=”111″ Url=”_catalogs/wt” RootWebOnly=”TRUE”></List>
<List Title=”Web Part Gallery” Type=”113″ Url=”_catalogs/wp” RootWebOnly=”TRUE”></List>
<List Title=”List Template Gallery” Type=”114″ Url=”_catalogs/lt” RootWebOnly=”TRUE”></List>
- style=”font-size: 11pt; font-family: Calibri”>Clear out the old element.
- style=”font-size: 11pt; font-family: Calibri”>Add the following element to the
/Project/Modules style=”font-size: 11pt; font-family: Calibri”> element:
<Module Name=”DefaultHome” Url=”” Path=””>
<File Url=”default.aspx”>
<NavBarPage Name=”Home” ID=”1002″ Position=”Start”> </NavBarPage>
</File>
</Module>
- style=”font-size: 11pt; font-family: Calibri”>Add the following element to the
/Project/Modules
element:
<Module Name=”WebPartPopulation” List=”113″ Url=”_catalogs/wp” Path=”..stslistswplibdwp”
RootWebOnly=”TRUE”>
<File Url=”MSContentEditor.dwp” Type=”GhostableInLibrary”/>
<File Url=”MSPageViewer.dwp” Type=”GhostableInLibrary”/>
<File Url=”MSImage.dwp” Type=”GhostableInLibrary”/>
<File Url=”MSMembers.dwp” Type=”GhostableInLibrary”/>
<File Url=”MSXml.dwp” Type=”GhostableInLibrary”/>
</Module>
- style=”font-size: 11pt; font-family: Calibri”>Leave the font-family: Calibri”>as is.
At this point we have transferred all of the list definitions from our site template
to our site definition and created the list schema.xml files to store the schemas
for our custom lists. However, we have not added the web pats to our default.aspx
page. Unfortunately, I have run out of time on this post so I will have to leave
that for another day. In the mean time, I hope this post helps anyone looking for
a “quick-start” way to create site definitions from existing SharePoint sites.
Hi, great post. Do you know how to specify a specific theme and regional settings in the ONET.XML?
Toby, I have not seen how to do that. You can always fall back on specifying it in code in an ASPX page. You can spcify to run the ASPX page using the ExecuteURL sub-element of the Configuration element.