I DelegateControl di SharePoint 2007 (WSS3 - MOSS) sono identificati all'interno delle pagine dal tag

<SharePoint:DelegateControl runat="server" ControlId="nomeDelControllo" />

e, a differenza dei palceholders, possono essere sovrascritti tramite feature.
Se esistono più controlli viene visualizzato quello con attributo Sequence più BASSO (vedi element.xml).

Nell'esempio vado a ridefinire, tramite una feature, il controllo GlobalSiteLink0 (definito nella default.master e solitamente non visibile). Questo controllo si trova nella pagina in alto a destra ed è posizionato sul fianco destro della scritta Welcome utenteCorrente.

La modifca consiste nell'aggiungere un'immagine cliccable che punta a questo sito.

La feature è composta da 3 file:
  • feature.xml la descrizione della feature da posizionare in 12\TEMPLATE\FEATURES\SgartControl
  • elements.xml la descrizione del controllo da posizionare in 12\TEMPLATE\FEATURES\SgartControl
  • SgartControl.ascx il template del controllo da posizionare in 12\TEMPLATE\CONTROLTEMPLATES\Sgart

File: feature.xml
<Feature  Id="46DF1702-F61C-4C7A-87C4-B00F92C4CFAA"
  Title="Sgart Control"
  Description="Sgart Control example"
  Scope="Site"
  Hidden="FALSE"
  xmlns="http://schemas.microsoft.com/sharepoint/">
  <!-- copy to 12\TEMPLATE\FEATURES 
  then install feature
  stsadm -o installfeature -name SgartControl
  -->
  <ElementManifests>
    <ElementManifest Location="Elements.xml"/>
  </ElementManifests>
</Feature>

File: elements.xml
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Control Id="GlobalSiteLink0"
           Sequence="5"
           ControlSrc="~/_controltemplates/Sgart/SgartControl.ascx"
  />
</Elements>

File: SgartControl.ascx
<%@ Control Language="C#" %>
<%@Assembly Name="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%>
<%@Register TagPrefix="CMS" Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.Publishing.WebControls"%>
<!-- sostituisce il controllo standars VariationsLabelMenu.ascx
     copy file to ...12\TEMPLATE\CONTROLTEMPLATES\Sgart -->
<span style="border: solid 1px red;">
<a href="http://www.sgart.it" target="_blank"><img src="http://www.sgart.it/images/sgart16.gif" alt="" width="16" height="16" border="0" /></a>
<cms:VariationDataSource id="LabelMenuDataSource" LabelMenuConfiguration="1" Filter="" runat="server"/>
</span>

la feature va installata con
stsadm.exe -o installfeature -name SgartControl
e poi attivata sul sito che interessa.