Sharepoint 2010 Webtemplate en meerdere features
In Sharepoint 2010 is het nu mogelijk om gebruik te maken van webtemplates. Zoals ik het zie is dit een evolutie van een Site template en een site definitie, maar er zijn genoeg anderen die hier een betere uitleg over kunnen geven, Mirjam geeft hier bijvoorbeeld een goede uitleg over: Post 1 & Post 2.
Omdat het gebruik van een webtemplate wel heel handig lijkt, heb ik dan ook besloten om dit te gebruiken voor het provisionen van m’n Sharepoint 2010 website(s).
Het kan kan gewoon door het plaatsen van een leeg element binnen je solution en deze in een feature te plaatsen. Dit ga ik hier niet beschrijven, omdat er al andere blogs zijn die dit goed hebben gedaan, zie bijvoorbeeld Stefan Stanev’s blog.
Komt er eigenlijk gewoon op neer dat je een nieuw element maakt en hier een onet.xml in plaatst en de bijbehorende bestanden:
Let hier wel op dat met een webtemplate geen modules kunnen worden ge-provisioned. Het is dus waarschijnlijk verstandig om de default.aspx te verwijderen en de onet.xml aan te passen dat de modules niet meer worden gebruikt.
De opmaak van het Elements.xml kan wel uit een van de eerdere gelinkte posts worden gehaald.
Na activatie van de wsp zullen alle features binnen de solution worden geactiveerd binnen de site collectie (heb als target de Site genomen). Een prima manier om je webtemplate uit te rollen en daarom ging ik ook verder met de bouw.
Nu wilde ik onlangs weer het hele provisioning proces testen op m’n testomgeving en kreeg continu de melding dat er al een lijst bestond met dezelfde naam, zie hieronder:
Na het bestuderen van de log-bestanden bleek het te gaan om de Pages lijst. Deze lijst was echter niet zichtbaar in de website, dus ging ik er van uit dat er iets foutief was aangepast in de features. Na lang zoeken kon ik er niet echt achter komen waarom het steeds fout bleef gaan, totdat ik met Sharepoint Designer ging kijken.
Een andere provisioning feature (van het Web) had bij activatie nieuwe pagina’s gemaakt in de lijst (eigenlijk map) Pages. Deze map werd dus door de feature aangemaakt tijdens activatie, waardoor de webtemplate deze niet meer kon aanmaken tijdens het uitrollen van de webtemplate.
Iets wat dus niet op alle sites wordt vermeld is dus dat een webtemplate in een eigen Sharepoint solution moet worden opgenomen, of dat je in ieder geval rekening houdt met het feit dat alle features worden geactiveerd binnen de solution.
Nu heb ik de webtemplate dus in een lege Sharepoint solution geplaatst en uitgerold. Afgezien van dat ik nu andere problemen heb met het uitrollen (die hier niets mee te maken hebben), lijkt het provisionen nu prima te verlopen.