Building sites besides sharepoint site template - sharepoint

During site creation using SharePoint, SharePoint offers some templates. If we need to create a site other than a template offered, how should we proceed?

You have 2 options:
Site Templates
Site Definitions
Many people use those terms interchangeably, but there are big differences between the two.
Site Templates
Site templates are easy to create. Basically, you create a site using a ite definition (e.g. the blank site) and start customizing it. You can add lists and libraries and setup the site however you want it. Then, go to Site Actions > Site Settings > Save site as template. You can save your site as a .STP file. The .STP file basically records everything that you added or changed on your site after site creation.
Once saved, your site template will show up in your site template gallery. You can go to the site template gallery and save the .STP file offline. Your new site template will be available in the subsite creation page in the "custom" tab. The template will only be availalbe in this site collection, unless you add the .STP file to the site template gallery of another site.
You can deploy site templates globally. So, if you want everyone to see a STP in their subsite creation page, you can run the following stsadm command:
stsadm -o addtemplate -filename BoardDirectors.stp -title "Board of Directors"
You can retract site templates whenever you want without affecting the sites that used them for creation. This makes them easy to version, as long as you don't want to push updates to existing sites.
One big problem with site templates is that you cannot staple features to them.
Site Definitions
Site definitions are collections of XML files deployed to the 12 hive. They are harder to develop; you basically have to use Visual Studio. The XML files have to be packaged into a SharePoint WSP and deployed using STSADM.
Creating a site definition gives you the most control over your site. Another benefit is that sites using the site definition will always reference the site definition's files, so updates will be recognized by sites using that site definition. For example, if you find a bug, you can fix it in one spot and all sites using that site definition will be fixed.
Note that withdrawing a site definition will break sites that use it.
Recently, many SharePoint experts have recommended staying away from creation new site definitions because of the overhead. Instead, if custom functionality is needed, they recommend coding custom features and just activating those features on sites.
Think about which option you need. In our organization, we chose not to create any new site definitions, and use site templates sparingly. Custom functionality is driven primarily by the use of features.

You are talking about custom "site definitions" and custom "site templates". Google those terms and you'll find tons of information.

You can design your own custom templates. Install VSeWSS extension for Visual Studio and it has a project type called "Blank Site" template. You can use it as a base starting point and customize the solution generated to your needs. All the information required to do so is available in the help document that comes with VSeWSS.

Related

Setting up default web parts on a Wiki Page from a Web Template in SharePoint 2010?

My team is trying to build out a Web Template which includes an instantiated Wiki Page with some default Web Parts added to it; but we're unable to get this behavior to happen.
In brief, we're looking to add some default.aspx (or Home.aspx, the name is unimportant, just the functionality) to the SitePages directory, GhostableInLibrary; so it's visible to all SiteCollections made from this Web Template.
It is of note that we're basing our Web Collection off the Team Site, and that the Wiki will be the default Home Page for the new site.
Site templates can be used to customize newly created sites except for the top site of a site collection. Since site templates are all managed in site collection's Solution gallary, so a site template CAN'T be used to define its own container.
You need a Site Definition to customize the first site of your site collection.
For how to use site template, you can goto, http://weblogs.asp.net/soever/archive/2009/10/19/sharepoint-2010-site-exporting-as-wsp-solution-part-1.aspx
For how to create a site definition, you can goto, http://msdn.microsoft.com/en-us/library/gg276356.aspx
If you want to strap onto an existing template without creating a new copy, or you don't have the original site template to access. You use a process called feature stapling.
When you create a sharepoint solution it would contain two features, one for your actual functionality and one that simple staples it to an existing template.
Here is an article discussing it some more. http://mssharepointtips.com/tip.asp?id=1065

Deploying site pages in SharePoint

I have around 9 web parts and 3 pages to be deployed. Each page will be having 3 webparts.
From a deploymnet perspective, i think i have the following two options:
Deploy the pages using a feature. The pages will have webparts present.
Create a custom site definition with a document library and have the three pages as part of the document library.
Can you please let me know which one of the options is better or is there any better solution?.
Please note that the solution needs to work on WSS 3.0 as well.
I would code the whole thing as a feature. You can staple it to the site definition for the site type you want it activated on.
If ever you need to migrate to the next version of SharePoint or another server it is easier to not have any custom site definitions. Also, the features leaves the site in a normal out-of-the box state; if you ever remove the feature nothing breaks.
Also, unlike the site definition it will also allow you to run it on sites that where created in the past.
First you need to deploy the webparts using WSP. Once it populated in webpart gallery you can copy the pages from page library and can paste in production.

SharePoint - My Site - Customization (Layout)

Is there a way to customize the layout of the default page on the My Site?
I know you can deploy a feature to push files into the hive to deploy a custom theme and a custom CSS, but what about the layout--where and which webparts show up for the user by default?
These both talk about customizing the look and feel:
Customizing MOSS 2007 My Sites within the enterprise
Customizing the My Site look and feel
But is there a way to build webpart zones and surface dataviews for lists, save those and have those pages come up as the default for when their My Site is initialized?
Most of the sites referenced here tell you to use a feature which changes the masterpage, which holds all your webpart zones, where they're located and what webparts are in those zones. After you've created a MySite masterpage which has the look and feel you want, you need to deploy the feature to switch masterpages. In addition, you need to add a feature which staples the original feature (which changes the masterpage) to any new site that is created. Inside your staple feature, you can specify which site types you want to staple the feature to.
Here is a good article which doesn't require you to write code, but does require you to create both of the features and deploy them: http://www.sharepointblog.com/2008/07/sp2007-custom-master-pages-on-subsites.html
The area where you'll want to pick out which site type the feature to change the masterpage applies to (what site type the feature is "stapled" to) is:
FeatureSiteTemplateAssociation Id="bb77f112-2cda-4e92-b0ff-820c0216a7fe"
TemplateName="STS#0"/> (this will staple it to the global template, any site created)
Here is a listing of the type of sites you can staple to: http://social.technet.microsoft.com/forums/en-US/sharepointgeneral/thread/721bec39-2d32-4bbc-9094-a021a0d06dcb
So, if you want to staple the feature to just MySites, you'd put this into your stapler feature:
FeatureSiteTemplateAssociation Id="bb77f112-2cda-4e92-b0ff-820c0216a7fe"
TemplateName="SPSMSITE#0" />
You'll notice from the example that I posted a link to above, the stapler feature references the masterpage switching feature by the Id you supply in the FeatureSiteTemplateAssociation part of you stapling feature.

SharePoint 2007 Site Template Content Types

I am new to SharePoint development. We have created a base site template and have used that template to start new sites in other locations on the same server. This works fine but the newly created site seems to "flatten" the custom content types created in the original site. I would think there would be a way to keep the original content type inheritance intact to help support any necessary modifications on the new site. They can still make the modifications but they take longer because you have to visit each list individually. Does anyone know how to fix this or know a better way to approach this?
The problem you are having is the move from your original site collection to another. The site template does not store the complete definition of a site - only the differences from the underlying site definition. Move from one site collection to another and you lose the underlying site definition and run into problems such as the loss of your content types.
Site templates and site definitions are two separate customizations you can undertake. You need to make a decision based on your requirements as to which is best.
Site templates
Pro's:
Easy to create and reuse through the SharePoint interface
Ideal for end users
A site template is a customization of the underlying default site definition
Con's:
Dependency on underlying site definition means SharePoint updates could break your site templates
Poor performance since the modifications are held in the database and are read from the DB and compiled on each request
Limited customization options
Site definitions
Pro's:
Harder to create: involves coding XML
Made by developers and site administrators
Independent of SharePoint default site definitions so not affected by SharePoint updates
Limitless customization options
Con's:
Difficult to modify when deployed
Can be cached on the file system so is fast to load
Check out Google for info on creating custom site definitions.
Hope this helps!
Jonny
The best way to do this is to create a site definition where the content types are within features whose scope is to the farm.
Tim

Duplicate SharePoint MOSS site without content

What is the best way to copy an existing SharePoint MOSS site and then recreate a copy of it on the same server?
I want to ideally include web parts but not actual content like documents etc.
I've looked at using the SPDeploymentWizard and saving the site as a template but the SPDeploymentWizard takes all the content and saving it as a template I get an error that the site is too big to save.
Any suggestions appreciated
You can create a site template by clicking the "Save Site as Template" option in the Site Settings page. SharePoint does not have the ability to create templates based on Publishing definitions but there is a work around listed here:
link text
Webpages with weparts or not are considered content in SharePoint.
So to move the site you will have to create a new moss site with an associate content database.
You will then be able to backup your original site and restore it over the new one.
Then you will have to delete the content you did not want to have in the new site.
To avoid this problem in the future, create a SharePoint Solution containing site template using STSDev2008.
This will take time, but it will allow you to create a site with all the required content pages etc ready to go and will reduce the time to create these sites.
You can backup and restore to a different server using stsadm.exe.
EDIT
Apparently there's an actual export feature for content
http://msdn.microsoft.com/en-us/library/bb507233.aspx
The default size of templates is around 10 MB. you can increase that using
stsadm -o setproperty -pn max-template-document-size
Also if you are doing templates, that does not do sub-sites.

Resources