Quantcast
Channel: SharePoint Corner » Masterpage
Viewing all articles
Browse latest Browse all 5

Display a Favicon in SharePoint without Masterpage customizations

0
0

Für einen ansprechenden Internet- oder Intranetauftritt auf Basis von Microsoft SharePoint, ist eine eigene Masterpage zwingend erforderlich. Soll SharePoint lediglich für Dokumentenablage oder Teamräume eingesetzt werden und das Unternehmen kann sich mit eines der Standard Themes identifizieren, so ist natürlich keine eigene Masterpage erforderlich. Doch wirft man einen Blick auf die Adresszeile so wird das Blau-Weiße SharePoint Favicon auffallen. Wie dieses anpassen?

Wird eine eigene Masterpage verwendet, so kann dies über HTML-Bordmittel realisiert und ausgetauscht werden. Bei der Verwendung einer Standard Masterpage ist dies leider nicht so einfach, aber trotzdem möglich! Und genau diesen Lösungsweg möchte ich hier kurz vorstellen.

Display a Favicon using Delegate Control

Was macht solch ein Delegate Control? Dieses wird während der Laufzeit gerendert und kann Code-Fragmente im HTML Page Head platzieren. Und genau dies wollen wir uns für das Setzen des Favicons zu nutze machen.

Zu Beginn habe ich ein neues SharePoint 2013 Projekt vom Typ Farm-Solution erstellt und anschließend ein neues Delegate Control hinzugefügt. Dieses muss auf die ID AdditionalPageHead und auf die später zu schaffende Klasse verweisen. Die Klasse beinhaltet schließlich die Logik, welche wie folgt ausschaut:

public class FaviconControl: WebControl
{
    private string FaviconPath = "/_layouts/15/.....";

    protected override void OnLoad(EventArgs e)
    {
        // Check if the Favicon Path is configured
        if (!String.IsNullOrEmpty(FaviconPath) && !String.IsNullOrWhiteSpace(FaviconPath))
        {
            // remove the default SharePoint Favicon, incause of IE issues
            foreach (Control htmlHeadChildControl in Page.Header.Controls)
            {
                if (htmlHeadChildControl is SPShortcutIcon)
                {
                    htmlHeadChildControl.Visible = false;
                    break;
                }
            }
        }
    }

    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        // Check if the Favicon Path is configured and should shown
        if (!String.IsNullOrEmpty(FaviconPath) && !String.IsNullOrWhiteSpace(FaviconPath))
        {
            // create a new Favicon with the configured path
            SPShortcutIcon favicon = new SPShortcutIcon();
            favicon.IconUrl = new Uri(SPUrlUtility.CombineUrl(SPContext.Current.Site.Url, FaviconPath));

            // render the favicon
            favicon.RenderControl(writer);
        }

        base.Render(writer);
    }
}

Schließlich muss dieses Delegate Control noch mit einem Site Collection Feature assoziiert werden, damit es für alle Seiten angewandt wird.

Navigiert man schließlich zu der gewünschten Seite, auf welcher das Feature aktiv ist, so wird das individuelle Favicon erscheinen. Und all das ohne Masterpage anpassungen :)

Fazit

Auf vielen Internetauftritten auf Basis von SharePoint wurde das Favicon vergessen. Und da ist es ja bei vielen Menschen sogar der erste Blickfang. Von daher hoffe ich, dass diese relativ einfache und unkomplizierte Lösung bei den einen oder anderen Anklang findet. Und wie immer bin ich natürlich für Fragen oder Verbesserungsvorschläge offen!


Viewing all articles
Browse latest Browse all 5

Latest Images





Latest Images