Tuesday, May 29, 2007

Content type definiëren op SPWeb niveau

Als men een content type definieert in een feature en daarna deze feature gaat deployen, dan zal het content type gedefinieerd worden op SiteCollection niveau. Het is echter mogelijk een content type te definiëren op SPWeb niveau via de UI. Nu vragen we ons af of het mogelijk is een content type feature te deployen op SPWebniveau...


Poging 1:
Scope van de feature op Web geplaatst.
Bij het installeren van de feature krijgt men dan een geweldige error: Elements of type 'ContentType' are not supported at the 'Web' Scope. This feature could not be installed

Een hopeloze poging 2:
gebruik maken van het Object Model.

//Id van het contenttype feature; site = SPWeb object
System.Guid guid = new System.Guid("56615608-9e3d-4ff6-b2c6-90e070e45ff1");
site.Features.Add(guid);

Deze poging was vanzelfsprekend dat dit niet ging werken omdat het eerst nodig is de feature te installeren (Dit is onmogelijk op Webniveau).
error: Feature '56615608-9e3d-4ff6-b2c6-90e070e45ff1' is Site-scoped, and can not be added to the Web.

Op deze pagina kan men alvast zien dat het element type content type behoord tot de scope 'Site'

Poging 3:
Een mogelijke Workaround:

Maak een content type aan via het Sharepoint Object Model en prop deze code in een Feature_Activated methode. Bij het installeren van de feature zal er een content type aangemaakt worden op SPWebniveau en niet op SiteCollection niveau.

Dit is een mogelijke oplossing :) Hoewel ik denk dat dit de enige oplossing is.

No comments: