Macros是构造umbraco网站的主要部件,用来为网站的内容显示添加动态特性。它可以完成一些简单的应用,例如动态更新导航栏,也可以完成一些复杂的效果,例如在一个asp.net用户控件中,允许网站访问者添加新内容。
Macros主要分为两种:xslt macros和.net macros。其中xslt macros主要用于内容显示,尤其是显示网站的层级结构,例如网站导航和网站地图等;.net marcos则可用于一些复杂的操作,比如执行服务器端代码,实现表单功能等。
Macros主要用在template中,也可以用在rich-text editor框中,接下来笔者将以添加一个xslt网站导航为例介绍下macros的用法。为了对比效果,添加前的网站首页如下图所示:
首先,选中Developer section,右键点击Macros,选择create,创建一个名为Site Menu Navigation的macro,如下图所示:
在右半部分,我们可以看到可以选择用于创建macro的文件类型可以为:xslt文件,.net user control,.net custom control以及其它一些脚本语言,例如python等。这里笔者选择一个已创建的xslt文件为例,在xslt文件对应的下拉框中看以看到所有的xslt文件,选择SiteMenuNavigation.xslt,点击保存,如下图所示:
至此,我们已经创建好了macro,接下来将介绍如何在template中使用它,选中setting section,选择master template,代码如下:
<asp:Content ContentPlaceHolderID="ContentPlaceHolderDefault" runat="server">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><umbraco:Item field="pageTitle" runat="server" /></title>
<link rel="stylesheet" href="/css/default.css"/>
<link rel="stylesheet" href="/css/main.css"/>
<link rel="stylesheet" href="/css/header-footer.css"/>
<link rel="stylesheet" href="/css/home.css"/>
</head>
<body>
<div id="siteHeader">
<div id="siteBanner">
<h1><umbraco:Item field="siteName" runat="server" /></h1>
</div>
<div id="siteNavMenu"></div>
</div>
<div id="siteContent">
<asp:ContentPlaceHolder Id="SiteContentPlaceHolder" runat="server">
<!-- Insert default "SiteContentPlaceHolder" markup here -->
</asp:ContentPlaceHolder>
</div>
<div id="siteBottom"></div>
</body>
</html>
</asp:Content>
我们将在<div id="siteNavMenu"></div>
部分插入我们创建好的macro,在编辑框的工具栏中选择Insert Macro,插入我们创建好的macro,插入后的代码如下所示:
<div id="siteNavMenu">
<umbraco:Macro Alias="SiteMenuNavigation" runat="server" />
</div>
打开站点,可以看到网站导航栏已经添加成功,如下图所示:
笔者在示例中使用了xslt macro,关于如何创建xslt以及.net user control的方法,以及关于macro的一些其他进阶知识,我们将在接下来的几章中一一介绍。