Welcome to TechNet Blogs Sign in | Join | Help

Как заменить application.master на собственный на всем портале SharePoint

Суть проблемы заключается в том, что если применить измененный application.master “мышкой” из Web интерфейса SharePoint, то останется довольно большое количество страниц (вся страницы, лежащие в папке LAYOUTS) к которым измененный master page не будет применяться.

 

Обойти такую проблему можно следующим образом:

 

1. Скопировать application.master и внести в него необходимые изменения. При этом нельзя удалять со страницы ни одного contentplaceholder'а.

Стандартный application.master, использующийся на портале по умолчанию находится на системном диске в папке \Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS.

2. Создать фичу, которая будет инсталлировать masterpage на портал в Master Page Gallary. Как это делается читать здесь.

3. Разработать HttpHandler

 

Открываем Visual Studio 2005. Создаем там проект и класс, следующего содержания:

 

namespace Samples.Modules

{

    /// <summary>

    /// Модуль для переопределения master.page для системных страниц

    /// </summary>

    public class MasterPageModule : IHttpModule

    {

        public void Init(HttpApplication context)

        {

            context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);

        }

 

        void context_PreRequestHandlerExecute(object sender, EventArgs e)

        {

            Page page = HttpContext.Current.CurrentHandler as Page;

            if (page != null)

            {

                page.PreInit += new EventHandler(page_PreInit);

            }

        }

void page_PreInit(object sender, EventArgs e)

        {

            Page page = sender as Page;

            if (page != null)

            {

                // Is there a master page defined?

                if (page.MasterPageFile != null)

                {

                    // only change the application.master files as those are the offenders

                    if (page.MasterPageFile.Contains("application.master"))

                        page.MasterPageFile = "/_catalogs/masterpage/ sample_application.master";

                }

            }

        }

 

 

        public void Dispose()

        {

        }

 }

 

Далее открываем web.config и прописываем туда наш Handler

 

<httpModules>

            <add name="AppMasterHandlerModule" type=" Samples.Modules.MasterPageModule, Samples, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c5bb9526235c6eae" />

    </httpModules>

 

Теперь на всем портале будет применен наш кастомизированный masterpage

Published Monday, September 17, 2007 6:40 PM by tvsmetanina

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# re: Как заменить application.master на собственный на всем портале SharePoint

Каким образом можно просто убрать правую зону вебчастей на главной странице портала MOSS?

Wednesday, September 19, 2007 1:40 AM by Kuero

# re: Как заменить application.master на собственный на всем портале SharePoint

Создать свой masterpage и сделать его используемым по-умолчанию. Или изменить  default.master.

Wednesday, October 10, 2007 4:46 PM by tvsmetanina

# re: Как заменить application.master на собственный на всем портале SharePoint

А у меня "Неизвестная Ошибка" вылезает...

Saturday, March 15, 2008 1:48 PM by Неизвестный

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker