Custom Web Templates - SharePoint Bruger Gruppe (SPBG)

Download Report

Transcript Custom Web Templates - SharePoint Bruger Gruppe (SPBG)

Who am I?
Anders Rask
SharePoint Solution Architect, ProActive A/S
Community moderator on sharepoint.stackexchange.com
@AndersRask
http://dk.linkedin.com/in/arask
http://sharepoint.stackexchange.com
http://sites.wizdim.com/andersrask
Developing
Custom Web Templates
In Visual Studio 2010
#spsuk30
Web Templates?
 Web Templates is a new site provisioning method in SharePoint 2010
that, amongst other things, can be used with MSOL since it can be
deployed as a Sandboxed Solution
 Relatively unknown, probably due to little attention from product group
 Should be used when ever possible for branding SharePoint 2010!
Template Provisioning methods
 Site Templates
 Site Definitions
 Feature Stapling
 Provisioning Providers
 WebProvisioned event
 Web Templates
Site Templates
 A ”light” version of Web Templates.
 (Most) sites can be saved as template
 In SP2010 they are WSP solutions (not STP files)
 Can be imported into Visual Studio to become ”real” Web Templates
Custom Site Definitions
 Defacto way of customizing SharePoint in SP2007
 Many opinions on how (and if) to use them
 Best Practice to keep site def’s slim (get ID and use feature stapling)
 That means no modules in ONET.XML and as few features as possible
Feature Stapling
 Makes it possible to associate (staple) functionality to existing site
definitions when site is being provisioned
<FeatureSiteTemplateAssociation Id=”[guid]>"
TemplateName="BLANKINTERNET#0" />
 Can also have feature properties
 Scope is usually Farm, but can also be WebApp or Site
 To associate to all templates (except Blank) use Global
Provisioning Providers
 ”Hotwires” site provisioning, by only creating site collection and
database, but not apply template
class MeetingWorkspaceProvisioningProvider : SPWebProvisioningProvider
 In
{ code you then apply any template, and then apply any logic

public override void Provision(SPWebProvisioningProperties properties)
{
Example:
Activate features, restrict sub-templates, create subsites, set
SPWeb site = properties.Web;
string
xmlPath
= properties.Data;
security,
create
groups,
add web parts...
// provision Blank Meeting Template
site.ApplyWebTemplate("MPS#1");
// do something potentially useful here
}
}
WebProvisioned event receiver
 Gives you a hook into the provisioning process to execute arbitrary
code.
void WebProvisioned(SPWebEventProperties
properties)
 public
Event isoverride
asynchronous
(but a good idea to set to Synchronous
to avoid
{race conditions)



ThmxTheme theme = ThmxTheme.Open(properties.Web.Site,
ReceiverThmxTheme.GetThemeUrlForWeb(properties.Web.ParentWeb));
can have Site or Web scope
theme.ApplyTo(properties.Web, false);
Site:properties.Web.Update();
called for every sub-site created in the site collection
base.WebProvisioned(properties);
}Web: called only for the sub-sites that are immediate children of
site where receiver is called
 Usage example: set Theme on sub-sites, add web parts... etc
the
Web Templates
 Created in Visual Studio as Element
 No direct tool support yet, but not much to it…
 Custom ONET is injected instead of referenced site definition, so no
link to provisioned sites
 Scope can be Site (Sandboxed Solution) or Farm (Trusted solution)
 Supports publishing framework
What provisioning method is right?
”It Depends!”
 Use the right tool for the job
 Often a combination is the right solution.
 The customizations you want to do often dictates approach.
 Use Web Templates whenever possible!
Time for…
DEMO!
Common ”gotcha’s” creating Web Templates

Since stapling is not supported, be aware that features that would normally be
stapled on an OOB site definition must be activated manually (e.g. Taxonomyfield
feature)

Web Template and the element it resides in must have same name

If your Web Template has site scoped features, you must ensure these are
activated when using template on sub-webs

When provisioning sub-webs with PowerShell using Sandboxed Solutions you
need to provision in two steps: 1) Create web, 2) Apply template
Known issues:

Doesn’t work with variations and content publishing

Subweb and Locale doesn’t work!

Bug if OS regional settings and installed language isn’t the same and
provisioning “outside of UI” (Visual Studio or PowerShell)

“Race conditions” with Content Type provisioning (CT hub)
Good Web Template practices
 Save the custom template name in a property bag on the SPWeb for
future reference
 Ensure your site scoped features for example by calling them from web
feature in ONET.XML
 Use Visual Studio –not save Site as Template- to create Web Templates
 Check what features are normally stapled to the OOB site definition you
are mimicking and add them last at appropriate scope in ONET.XML
Key take-aways
 Web templates is just a new way of provisioning sites in SharePoint
2010
 Prefer them over Site Definitions 99% of the time:
 B2B upgrades is easy (no link to manifest)
 V2V upgrades will be easier
 Works on SharePoint Online
 Scope is either Site (Sandbox) or Farm (Trusted) solutions
 Does not work with Site Variations, Content Publishing or similar sites
where template selection is out of your control (think Meeting
templates, My Sites etc)
References
Mirjam van Olst: Using Web Templates to create Site Collections
http://yux.dk/1a
Supported and unsupported scenarios for working with custom site definitions
http://yux.dk/1b
Vesa Juvonen: SharePoint 2010 and web templates
http://yux.dk/1c
Robert Bogue: Understanding SharePoint Branding Options
http://yux.dk/1d
Brian Wilson: Site Definitions versus Site Templates and deciding on
the correct customization approach
http://yux.dk/1e
New Event Binding Functionality in SharePoint Foundation 2010
http://msdn.microsoft.com/en-us/library/ee539983.aspx
Thanks for attending session!
Thanx for attending!
See you at http://sharepoint.stackexchange.com 

Visual Studio 2010 SharePoint Power Tools
Templates and extensions that provide a sandboxed Visual Web Part together with enhanced support for
sandboxed compilation to help you develop SharePoint solutions even more productively.
http://visualstudiogallery.msdn.microsoft.com/8e602a8c-6714-4549-9e95-f3700344b0d9

Mavention Cancel Adding SharePoint Project Items
Disables the default behavior of automatically adding SharePoint Project Items to Features.
http://visualstudiogallery.msdn.microsoft.com/9c7c4a73-3558-4712-a65c-badf070e4abc

CKS - Development Tools Edition (Server)
The SharePoint 2010 Visual Studio 2010 Extensions project (CKSDEV) is a collection of Visual Studio
templates, Server Explorer extensions and tools providing accelerated SharePoint 2010 development based
on Microsoft's new SharePoint 2010 development tools.
http://visualstudiogallery.msdn.microsoft.com/ee876627-962c-4c35-a4a6-a4d89bfb61dc

Imtech Get SPMetal Definition Extension
Installs a Site Node Extension that allows you to generate the SPMetal Definition from the given SharePoint
Site.
http://visualstudiogallery.msdn.microsoft.com/1a7fc8c2-8cdb-414b-b7bb-9c25897bf78b