The layout.Master file is an ASP.NET MasterPage and is the template for all pages in the content management system. Any markup that needs to be on every page in the site should be in the layout.Master file.
Inside the layout.Master file there are some required tags that are used to render content from the database and a few optional mojoPortal specific tags that can be used, but other than that, you can add any markup that you want to appear on every page. You can position the required tags within the layout.Master any way you wish.
Required elements of a mojoPortal layout.Master file
The site cannot function without these elements. In addition to these, the skin must also have the standard required html elements html head (which should have id="Head1" runat="server"), and body elements with both opening and closing tags. It is also highly advisable to have a DOCTYPE element.

SiteMapDataSource - is required to populate the menu
ScriptManager - is required as part of the Microsoft AJAX framework.
LoginLink - displays the Login Link if the user is not logged in, it is hidden when the user is logged in.
LogoutLink - displays the Logout link, it is hidden when the user is not logged in
contentplaceholder id=pageEditContent - for users in a role which allows editing content, this is where the edit icons (add page, edit page properties, edit page content) will be dislayed
SiteMenu - this is the main menu for the site. The most important setting is Direction which can be Horizontal or Vertical. TopLevelOnly should normally be set to false unless you are also using the PageMenu, see optional elements below. If set to true the SiteMenu will only display top level menu items.
Panel id=divLeft - this is the container for content that comes from the content management system and is placed in the left column. The content actually renders in the contentplaceholder within this panel, but the Panel itself is used for positioning and/or showing or hiding the left content using css.
Panel id=divCenter - this is the container for content that comes from the content management system and is placed in the center column. The content actually renders in the contentplaceholder within this panel, but the Panel itself is used for positioning and/or showing or hiding the left content using css.
Panel id=divRight - this is the container for content that comes from the content management system and is placed in the right column. The content actually renders in the contentplaceholder within this panel, but the Panel itself is used for positioning and/or showing or hiding the left content using css.
Note that the content management system will hide the left or right column if no content exists for that column for the current page. The content system also assigns a different css class to the divCenter depending on whether there is content in the left or right columns.
center-nomargins is assigned to divCenter if there is no content in left or right
center-rightandleftmargins is assigned to divCenter if there is content in both the right and left columns
center-rightmargin is assigned to divCenter if there is content only in center and right columns
center-leftmargin is assigned to divCenter if there is only content in the center and left columns
See the css documentation for more info on these css classes.
Recommended Elements of a mojoPortal layout.Master file
It is recommended that you include these elements. Some functionality may be lost by removing them so do this only if you understand the impact of what you are doing and have a specific reason for leaving any of these out.

PageTitle - this shoud be within the title element within the head element. This control populates the page title that is displayed in the top of the browser. By default it will be SiteName - PageName but you can oiverride this in the PageSettings for any page in the content system
Stylesheet - this control gets the correct stylesheet url for the current skin, it should be in the head section.
MetaContent - this should also be in the head section. MetaContent can be defined for a site in the Site Settings admin section. Individual pages can also override the site setting in Page Settings.
Favicon - this gets the icon link that points to favicon.ico in the skin folder. Modern browsers display this at the left of the url.
WelcomeMessage - this is the indicator of who you are logged in as.
HomeLink - is just a link to the home page of the site
SiteMapLink - this is a link to the Site Map page. Note that you can have more than one SiteMap link. I usually have one at the top and bottom of the page.
MyPageLink - if the MyPage feature is enabled in Site Settings this link to the My Page feature will be displayed.
UserProfileLink - is hidden if the user is not logged in.
MailboxLink - this will be a link to the private message system mailbox (not yet implemented as of 2007-01-22, but coming soon)
MemberlistLink - if the Web.config setting AllowAnonymousUsersToViewMemberList is true this link will be displayed all the time, if not it will be displayed only for users who are logged in.
RegisterLink - is only displayed to users who are not logged in. If Site Settings is configured not to allow new users to register then this link is not displayed.
SearchInput - If LinkOnly is true this will just be a link to the Search page, if false this will be a search input textbox and a button.
SiteLogo - corresponds to a logo that you pick from Site Settings and is also a link to the home page. It is possible to remove this and just make your own image link using markup.
SiteTitle - corresponds to the Title of the site as entered in Site Settings, it also links to the home page.
SkipLink - is an accessibility feature, it should be placed near the title. A hidden link is placed there that can jump past the menu to the start of the page content. For more info on Skip Links see here.
Breadcrumbs - if Show Breadcrumbs is enabled in Page Settings, breadcrumbs are displayed. Breadcrumbs are an indicator of where you are in the site. This page is using breadcrumbs.
ChildPageMenu - if Show Child Page menu is enabled in Page Settings a menu of pages beneath the current page is shown. This is useful for pages that are just a parent to other pages but have no content themselves.
SkinPreview - is used for the Printable View link which uses the printerfriendly skin.
Optional Elements of a mojoPortal layout.Master file

<portal:FroumMyThreadsLink id="FroumMyThreadsLink1" runat="server" RenderAsListItem="true" /> can be used to show a link for the current user's forum threads. If the user doesn't have any posts then it doesn't render.
SiteMapDataSource id=PageMapDataSource - this is required if using the PageMenu
PageMenu - is an optional element used to design skins with a split menu. Normally this is done by setting the SiteMenu to Direction=Horizontal and TopLevelOnly=true. In this case the PageMenu is usually a vertical menu on the left that will show the sub menu items for the top menu. See the splitmen1, splitmenu2, and jwh1 skins for examples that use the PageMenu
Additional Resources
Master Pages and Site Navigation by Scott Mitchell
Last Updated 2007-01-22 Joe Audette