چطور یک Master Page ابتدایی(Minimal Master Page) را ایجاد کنیم؟
یکی از کارهایی که شما بعد از کامل کردن و پیکر بندی نمودن یک سایت با Microsoft Office Sharepoint server 2007 انجام می دهید، ایجاد یک یا چند Master Page می باشد. یک Master Page می تواند شامل ارجاعاتی به اجزایی باشد که شما می توانید آنرا بین چندین صفحه در سراسر سایت به اشتراک بگذارید، که این اجزاء می توانند شامل منوها، کنترل های جستجو، کنترل های logon و بنرها باشند. یکMaster Page همچنین می تواند شامل cascading style sheet (CSS) و ECMAScript (JScript, JavaScript) باشد که در واقع می توانند تعاریف ظاهر سایتتان را شامل شوند.
بنابراین شما می توانید با توجه به نیازهایتان، از Master Pageهای مختلفی برای ساختار سلسله مراتبی سایتتان استفاده نمایید تا از این طریق سطوح مختلف یک پورتال یا سایت از هم تمییز داده شوند.
گالری Master Page ها
وقتی که یک Site Collection را در Office SharePoint Server 2007 ایجاد می کنید، یک master page gallery هم ایجاد می شود، که شامل تمام master page ها و layout های مربوطه برای سایت است. خود Sharepoint شامل چند master page آماده مانند BlueBand.master می باشد که می توانند در ایجاد پورتال ها مورد استفاده قرار گیرند. این master page ها از طریق آدرس زیر قابل دسترسی هستند:
C:\Program%20Files\Common%20Files\Microsoft%20Shared\web%20server%20extensions\12\TEMPLATE\FEATURES\PublishingLayouts\MasterPages\
شما می توانید هر کدام از اینها را مورد استفاده قرار داده و یا می توانید آنها را Customize نموده و یا نمونه جدید برای سایتتان استفاده کنید.
چرا از یک Minimal Master Page استفاده کنیم؟
ایجاد و کامل کردن یک master page جدید برای سایتتان، نیازمند یک طراحی و صرف زمان زیادی می باشد. با استفاده از روشی که خواهید دید، شما می توانید از دوباره نویسی و استفاده کدهای به قول خودمان فرسوده در این master page جلوگیری نمایید.
این مقاله به شما نشان می دهد که چطور یک minimal master page ایجاد نمایید، که فقط شامل توابع ضروری برای Office SharePoint Server 2007 باشد. بنابراین شما می توانید یک platform برای ایجاد master page دلخواهتان داشته باشید.
شاید شما بخواهید از یک master page نمونه مثل BlueBand برای ایجاد یک master page جدید استفاده کنید. اگر تغییرات شما زیاد نباشد و در حد اضافه شدن یک لوگو یا یک بنر باشد ، راه حل خوبی است ولی اگر غیر از این باشد برایتان سخت خواهد بود و باعث صرف شدن زمان زیاد و بوجود آمدن مشکلاتی خواهد شد، که در آخر هم نتیجه مطلوبی نخواهید گرفت.
کد نمونه زیر فقط شامل چیزهایی است که جزء نیازهای ضروری برای یک master page در Office SharePoint Server 2007 می باشد. این اجزاء ضروری شامل content placeholder ها و کنترل هایی است که برای کار کردن با صفحات layout ،که در نصب اولیه Office SharePoint Server 2007 بصورت پیش فرض وجود دارند، می باشد.
نیازهای یک master page در Office SharePoint Server 2007 بصورت زیر می باشد:
title, branding, logon functionality, search functionality, breadcrumb functionality, and basic structural elements such as page areas, separators, borders, consoles, and description placeholders.
برای ایجاد یک master page می توانید از Office SharePoint Designer 2007 به عنوان محیط طراحی استفاده نمایید. همچنین می توانید از محیط های ویرایش متن ویا از یک IDE مثل Microsoft Visual Studio ، برای ایجاد آن استفاده کنید.
Master page های Office SharePoint Server 2007 بر اساس مشخصه SPWeb.CustomMasterUrl از کلاس SPWeb در Windows SharePoint Services می باشند.
برای ایجاد یک minimal master page
1. SharePoint Designer خود را باز کنید.
2. از طریق منوی File بر روی New کلیک نموده و بعد بر روی گزینه SharePoint Content کلیک کنید ، سپس از پنجره باز شده به تب Page بروید.
3. بر روی گرینه Master Page دوبار کلیک نمایید تا master page جدید ایجاد شود.
4. بر روی Design کلیک کنید تا master page را در حالت طراحی نمایش دهد.شما فقط یک header و چند تا content placeholders در آن مشاهده می کنید.
5. بر روی Code کلیک کنید تا در نمای کد قرار بگیرید.
6. کد زیر را کپی نموده و آنرا جایگزین کد master page کنید.
<%-- Identifies this page as a .master page written in Microsoft Visual C# and registers tag prefixes, namespaces, assemblies, and controls. --%>
<%@ Master language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="SPSWC" Namespace="Microsoft.SharePoint.Portal.WebControls" Assembly="Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls" Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="PublishingNavigation" Namespace="Microsoft.SharePoint.Publishing.Navigation" Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="wssuc" TagName="Welcome" src="~/_controltemplates/Welcome.ascx" %>
<%@ Register TagPrefix="wssuc" TagName="DesignModeConsole" src="~/_controltemplates/DesignModeConsole.ascx" %>
<%@ Register TagPrefix="PublishingVariations" TagName="VariationsLabelMenu" src="~/_controltemplates/VariationsLabelMenu.ascx" %>
<%@ Register Tagprefix="PublishingConsole" TagName="Console" src="~/_controltemplates/PublishingConsole.ascx" %>
<%@ Register TagPrefix="PublishingSiteAction" TagName="SiteActionMenu" src="~/_controltemplates/PublishingActionMenu.ascx" %>
<%-- Uses the Microsoft Office namespace and schema. --%>
<html>
<WebPartPages:SPWebPartManager runat="server"/>
<SharePoint:RobotsMetaTag runat="server"/>
<%-- The head section includes a content placeholder for the page title and links to CSS and ECMAScript (JScript, JavaScript) files that run on the server. --%>
<head runat="server">
<asp:ContentPlaceHolder runat="server" id="head">
<title>
<asp:ContentPlaceHolder id="PlaceHolderPageTitle" runat="server" />
</title>
</asp:ContentPlaceHolder>
<Sharepoint:CssLink runat="server"/>
<asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server" />
</head>
<%-- When loading the body of the .master page, SharePoint Server 2007 also loads the SpBodyOnLoadWrapper class. This class handles .js calls for the master page. --%>
<body onload="javascript:_spBodyOnLoadWrapper();">
<%-- The SPWebPartManager manages all of the Web part controls, functionality, and events that occur on a Web page. --%>
<form runat="server" onsubmit="return _spFormOnSubmitWrapper();">
<wssuc:Welcome id="explitLogout" runat="server"/>
<PublishingSiteAction:SiteActionMenu runat="server"/>
<PublishingWebControls:AuthoringContainer id="authoringcontrols" runat="server">
<PublishingConsole:Console runat="server" />
</PublishingWebControls:AuthoringContainer>
<%-- The PlaceHolderMain content placeholder defines where to place the page content for all the content from the page layout. The page layout can overwrite any content placeholder from the master page. Example: The PlaceHolderLeftNavBar can overwrite the left navigation bar. --%>
<asp:ContentPlaceHolder id="PlaceHolderMain" runat="server" />
<asp:Panel visible="false" runat="server">
<%-- These ContentPlaceHolders ensure all default SharePoint Server pages render with this master page. If the system master page is set to any default master page, the only content placeholders required are those that are overridden by your page layouts. --%>
<asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server"/>
<asp:ContentPlaceHolder id="PlaceHolderTitleBreadcrumb" runat="server"/>
<asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea" runat="server"/>
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server"/>
<asp:ContentPlaceHolder ID="PlaceHolderPageImage" runat="server"/>
<asp:ContentPlaceHolder ID="PlaceHolderBodyLeftBorder" runat="server"/>
<asp:ContentPlaceHolder ID="PlaceHolderNavSpacer" runat="server"/>
<asp:ContentPlaceHolder ID="PlaceHolderTitleLeftBorder" runat="server"/>
<asp:ContentPlaceHolder ID="PlaceHolderTitleAreaSeparator" runat="server"/>
<asp:ContentPlaceHolder ID="PlaceHolderMiniConsole" runat="server"/>
<asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" runat ="server" />
<asp:ContentPlaceHolder id="PlaceHolderLeftActions" runat ="server"/>
<asp:ContentPlaceHolder id="PlaceHolderPageDescription" runat ="server"/>
<asp:ContentPlaceHolder id="PlaceHolderBodyAreaClass" runat ="server"/>
<asp:ContentPlaceHolder id="PlaceHolderTitleAreaClass" runat ="server"/>
<asp:ContentPlaceHolder id="PlaceHolderBodyRightMargin" runat="server" />
</asp:Panel>
</form>
</body>
</html>
7. از طریق منوی File بر روی Save As کلیک نموده و یک نام منحصر با پسوند .master به آن می دهیم، سپس آنرا در master page gallery (/_catalogs/masterpage) مربوط به Site Collection ذخیره نمایید.