in

SharePoint Blogs

The Best Place for SharePoint-related Blogs

This Blog

Syndication

News

Ein guter Blog lebt auch vom Feedback der Leser. Aus diesem Grund möchte ich alle Leser bitten und auffordern, Feedback und Bewertung für einzelne Posts abzugeben. Ich freue mich natürlich auch, wenn mein Blog oder auch einzelne Posts verlinkt werden. Dies hilft anderen Leser und ist zugleich auch Ansporn für mich!

Meine SharePoint-Notizen

SharePoint-Notizen aus meiner täglichen Projektarbeit mit dem Microsoft Office SharePoint Server 2007

Design-Tipp: Formatierung des Web-Title durch Änderungen an der Masterpage

Eine der Arbeiten der letzten Wochen war die Design-Änderung unseres eigenen Intranets - natürlich auf SharePoint-Basis! Ziel war, das Design moderner zu gestalten und besser an das CI unserer Firma anzupassen. Eine kleine Herausforderung dabei war die Startseite, denn der Titel sollte farblich hervorgehoben werden. Bisher lautete der Titel der Startseite "MITARBEITER-PORTAL" - dieser sollte in "MITARBEITER-PORTAL" geändert werden.

Der Titel der Startseite entspricht normalerweise dem Titel des Webs zu dem die Startseite gehört. Dieser Titel wird als Text eingegeben und über die Masterpage auf jeder Seite des Webs eingeblendet. Die Frage, die sich für uns nun stellte war: wie kann man diese Texteinblendung manipulieren? Da dieser Mechanismus über die Masterpage gesteuert wird, ergab sich eine weitere Frage: wenn Änderungen an der Masterpage nötig sind, wie kann man diese Änderungen auf die Startseite bzw. das Root-Web begrenzen?

Wie immer gibt es mehrere Lösungsmöglichkeiten. Wir haben uns für die folgende Lösung entschieden:

Wir haben auf der Masterpage ein kleines Script hinterlegt:

 public void CheckForRoot()
 {
     SPWeb oWeb = SPControl.GetContextWeb(Context);
     if(false == String.IsNullOrEmpty(oWeb.Name))
     {
         Response.Write("<div id=\"OWNTITLE\" class=\"style2\"><strong>" + oWeb.Title.ToString() + "</strong></div>");
     }
     else
     {
      Response.Write("<div id=OWNTITLE class=style3><strong><span class=ms-menuitemdescription>M</span><span class=style4>IT</span><span class=ms-menuitemdescription>ARBEITER-PORTAL</span></strong></div>");
     }
 }

Dieses Script macht sich eine Eigenschaft des SharePoint-Objektmodels zu Nutze: Zitat aus dem MSDN Developer Network:"The Name property returns an empty string if the site is a top-level site.". Man kann also ein Root-Web u.a. daran erkennen, dass die Name-Eigenschaft leer ist. Erkennt das Script, dass es gerade im Context des Root-Webs läuft, gibt es einen HTML-String zurück, der die Ausgabe "MITARBEITER-PORTAL" erzeugt. Ansonsten wird einfach die Title-Eigenschaft des aktuellen Webs zurückgegeben.

Damit dieses Script aber auch wirklich das gewünschte Resultat bringt, müssen noch weitere Änderungen vorgenommen werden. In der Masterpage muss der Code, der normalerweise für die Ausgabe der Title-Eigenschaft zuständig ist, durch einen Aufruf des obigen Scripts ersetzt werden.

Das sieht dann z.B. folgendermaßen aus:

 <asp:ContentPlaceHolder id="PlaceHolderSiteName" runat="server">
    <h1 class="ms-sitetitle">
    <br><% CheckForRoot(); %></h1>
 </asp:ContentPlaceHolder>

Die interessante Zeile ist in roter Fettschrift dargestellt.

Weiterhin muss in der web.config noch eingestellt werden, dass Scripte in der Masterpage erlaubt sind. Das sieht dann aus wie folgt:

<configuration>

  <SharePoint>

    <SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="10" TotalFileDependencies="50" AllowPageLevelTrace="false">

      <PageParserPaths>

         <PageParserPath VirtualPath="/_catalogs/masterpage/*" CompilationMode="Always" AllowServerSideScript="true" IncludeSubFolders="true" />

      </PageParserPaths>

    </SafeMode>

  </SharePoint>

</configuration>

Die in roter Fettschrift dargestellte Zeile muss einfach eingefügt werden. Damit werden Scripte in der Masterpage erlaubt.

Auf diese Weise läßt sich durch ein wenig Scripting in der Masterpage eine einfache Dynamik in der Darstellung von Seiten bzw. Webs erzeugen.

 

Add to Technorati Favorites

Comments

No Comments

Leave a Comment

(required )  
(optional )
(required )  
Add

Need SharePoint Training? Attend a SharePoint Bootcamp!

Posts (c) their respective authors. Everything else (c) 2007 SharePoint Experts