Programmatisch löste ich das ganze mit Hilfe eines FeatureReceivers, dessen Feature (Web-Scope) in der onet.xml aktiviert wird:
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
// remove all site templates to prevent, users create more subwebs beneath the current one
if (properties.Feature.Parent is SPWeb)
{
try
{
using (SPWeb currentWeb = (SPWeb)properties.Feature.Parent)
{
currentWeb.SetAvailableWebTemplates(new Collection(), (uint)1031);
currentWeb.Update();
}
}
catch (Exception e)
{
}
}
}
In dem obigen Codebeispiel werden die verfügbaren WebTemplates des aktuellen Webs einfach neu gesetzt und zwar mit einer leeren Collection des Typs SPWebTemplate. Anschließend wird das Web geupdated damit die Änderung wirksam wird. Die 1031 steht hier übrigens für den deutschen Sprachraum.
Wiederherstellen lassen sich die Standard-Templates natürlich auch mit Hilfe dieser zwei Zeilen:
currentWeb.AllowAllWebTemplates();
currentWeb.Update();
Keine Kommentare:
Kommentar veröffentlichen