了解如何使用 Dreamweaver 模板设计“固定的”页面布局;然后基于模板创建文档,创建的文档会继承模板的页面布局。
模板\n是一种特殊类型的文档,用于设计"固定"页面布局;\n您可以基于该模板创建继承\n其页面布局的文档。在设计模板时,您可以指定哪些内容为"可编辑",\n即基于该模板的文档中用户可以编辑的内容。\n模板使模板作者能够控制哪些页面元素是模板用户(如作者、图形艺术家或其他 Web 开发人员)可以编辑的。模板作者可以在文档中包含几种类型的模板区域。
模板可让您控制大型设计区域并重用\n完整的布局。如果您想重用单个设计元素,\n如地点的版权信息或徽标,请创建库\n项目。
使用模板可以一次更新多个页面。 基于模板创建的文档仍与\n该模板保持关联(除非您稍后分离该文档)。您可以修改模板并立即更新基于该模板的所有文档中的设计。
Dreamweaver 中的模板与某些其他 Adobe Creative Cloud 软件中的模板的不同之处在于:默认情况下 Dreamweaver 模板的页面中的各部分是固定的(即不可编辑)。
模板区域的类型
将文档另存为模板以后,文档的大部分区域就被锁定。 模板创作者在模板中插入可编辑区域或可编辑参数,从而指定在基于模板的文档中哪些区域可以编辑。
创建模板时,可编辑区域和锁定区域都可以更改。 而在基于模板的文档中,模板用户只能在可编辑区域中进行更改,不能修改锁定区域。
共有四种类型的模板区域:
可编辑区域:基于模板的文档中未锁定的区域,也就是模板用户可以编辑的部分。 模板创作者可以将模板的任何区域指定为可编辑的。 要使模板生效,其中至少应该包含一个可编辑区域;否则基于该模板的页面是不可编辑的。 有关可编辑区域中的详细信息,请参阅在模板中创建可编辑区域。
重复区域:文档布局的一部分,设置该部分可以使模板用户必要时在基于模板的文档中添加或删除重复区域的副本。 例如,可以设置重复一个表格行。 重复部分是可编辑的,这样,模板用户可以编辑重复元素中的内容,而设计本身则由模板创作者控制。
可以在模板中插入的重复区域有两种:重复区域和重复表格。 如需了解如何使用重复区域,请参阅在 Dreamweaver 中创建重复区域和表格。
可选区域:模板中放置内容(如文本或图像)的部分,该部分在文档中可以出现也可以不出现。 在基于模板的页面上,模板用户通常控制是否显示内容。 有关详细信息,请参阅可选区域部分。
可编辑的标签属性:用于对模板中的标签属性解除锁定,这样便可以在基于模板的页面中编辑相应的属性。 例如,可以“锁定”出现在文档中的图像,而允许模板用户将对齐设置为左对齐、右对齐或居中对齐。 有关详细信息,请参阅在 Dreamweaver 中定义可编辑的标签属性。
模板中的链接
当您通过将现有\n页面另存为模板来创建模板文件时,Templates 文件夹中的新模板以及\n文件中的任何关联都会更新,以便其相对于文档的\n路径正确。稍后,当您基于该\n模板创建文档并保存时,所有相对于文档的关联都会再次更新\n以继续指向正确的文件。
当您向模板文件添加新的相对于文档的关联时,\n如果您在属性检查器的关联文本框中键入路径,\n很容易输入错误的路径名称。模板文件中的正确路径是\n从 Templates 文件夹到关联文档的路径,而不是从基于模板的文档文件夹\n到关联文档的路径。通过在模板中创建关联时使用属性检查器中的文件夹图标或指向文件图标,\n确保关联存在正确的路径。
模板和\n基于模板的文档中的服务器脚本
某些服务器脚本插入在文档的最\n开始或结尾处(在 <html> 标记\n之前或在 </html> 标记之后)。此类脚本在模板和基于模板的文档中需要\n特殊处理。通常,\n如果您对模板中 <html> 标记\n之前或 </html> 标记之后的脚本代码进行更改,\n这些更改不会复制到基于该模板的文档中。如果主体\n中的其他服务器脚本依赖于未复制的脚本,这可能\n导致服务器错误。如果您更改模板中 <html> 标记\n之前或 </html> 标记之后的脚本,会显示\n警报警告您。
要避免此故障,您可以在模板的 head 部分\n插入以下代码:
<!-- TemplateInfo codeOutsideHTMLIsLocked="true" -->
当模板中包含此代码时,对 <html> 标记\n之前或 </html> 标记之后的脚本的更改会复制到基于\n该模板的文档中。但是,您将不再能够在\n基于该模板的文档中编辑这些脚本。因此,您可以\n选择在模板中编辑这些脚本,或在基于模板的文档中\n编辑,但不能两者同时进行。
模板参数
模板\n参数表示用于控制基于模板的文档中内容\n的值。将模板参数用于可选区域\n或可编辑标记属性,或者设置您要传递到\n附加文档的值。对于每个参数,您需要选择名称、数据\n类型和默认值。每个参数都必须有唯一的名称,\n且区分大小写。它们必须是五种允许的数据类型之一:文本、布尔值、颜色、URL 或数值。
模板参数作为实例参数传递到文档中。 在大多数情况下,模板用户可以编辑参数的默认\n值,以自定义在基于模板的文档中显示的内容。在\n其他情况下,模板作者可能会根据模板表达式的值确定在\n文档中显示的内容。
模板表达式
模板\n表达式是计算或评估值的语句。
您可以使用表达式来存储值并在\n文档中显示它。例如,表达式可以简单到就是参数的值,如 @@(Param)@@,或者复杂到可以计算用于在表格行中交替显示背景颜色的值,如 @@((_index & 1) ?red : blue)@@。
还可以针对假设条件和多重假设条件定义表达式。 当表达式用在条件语句中时,Dreamweaver 将它计算为 true 或 false。 如果条件为真,可选区域会在基于模板的\n文档中显示;如果为假,则不会显示。
您可以在代码视图中或在插入可选区域时在"可选区域"\n对话框中定义表达式。
在代码视图中,有两种定义模板表达式的方法: 使用 <!-- TemplateExpr expr="your expresson"--> 注释 或 @@(your expression)@@。当您在模板代码中插入表达式时,\n表达式标记会在设计视图中显示。\n当您应用模板时,Dreamweaver 会评估\n表达式并在基于模板的文档中显示值。
模板表达式语言
模板表达式语言是\nJavaScript 的一个小子集,使用 JavaScript 语法和优先级规则。使用\nJavaScript 运算符编写如下表达式:
@@(firstName+lastName)@@
支持下列功能和运算符:
数值字面量、字符串字面量(仅限双引号语法)、布尔值字面量(true 或 false)
变量引用(请参阅本部分后面的已定义变量列表\n)
域引用(“点”运算符)
一元运算符:+、-、~、!
二进制运算符:+、-、*、/、%、&、|、^、&&、\n||、<、<=、>、>=、==、!=、<<、>>
条件运算符:?:
括号:()
使用以下数据类型: 布尔值、IEEE 64‑bpc 浮点数、字符串和对象。Dreamweaver 模板不支持\n使用 JavaScript"null"或"undefined"类型。它们也不允许\n标量类型隐式转换为对象;因此,\n表达式 \"abc\".length 会触发错误,\n而不是产生值 3。
唯一可用的对象\n是表达式对象模型定义的对象。定义了以下\n变量:
_document
包含文档级别模板数据,为模板中的每个参数都设有一个字段。
_repeat
仅为出现在重复区域内的表达式定义。提供关于区域的内置信息
_index
当前项的数字索引(从 0 开始)
_numRows
此重复区域内的总项数
_isFirst
如果当前条目是其重复区域中的第一个条目,则为真
_isLast
如果当前条目是其重复区域中的最后一个条目,则为真
_prevRecord
上一项的 _repeat 对象。 对于区域中的第一个条目,访问此属性是错误的。
_nextRecord
下一项的 _repeat 对象。 对于区域中的最后一个条目,访问此属性时会出错。
_parent
在嵌套重复区域中,此项提供外层重复区域的 _repeat 对象。在嵌套重复区域之外访问此属性是错误的。
在表达式计算过程中,_document 对象和 _repeat 对象的所有字段都隐式可用。例如,您可以输入 title 而非 _document.title 来访问文档的标题参数。
如果出现字段冲突,_repeat 对象的字段优先于 _document 对象的字段。因此,您通常无需显式引用 _document 或 _repeat,但在重复区域内可能需要使用 _document 来引用被重复区域参数隐藏的文档参数。
使用嵌套重复区域时,只有最内层重复区域的字段隐式可用。外层区域必须使用 _parent 明确引用。
模板代码中的多重 If 条件
您可以为 if 和 multiple-if 条件定义模板表达式。此示例演示如何定义名为"Dept"的参数、设置初始值,以及定义 multiple-if 条件来确定显示哪个徽标。
以下是您可能在模板的 head 部分中输入的代码示例:
<!-- TemplateParam name="Dept" type="number" value="1" -->
以下条件语句检查分配给 Dept 参数的值。当条件为真或匹配时,会显示相应的图像。
<!-- TemplateBeginMultipleIf -->
<!-- 检查 Dept 的值并显示相应的图像-->
<!-- TemplateBeginIfClause cond=\"Dept == 1\" --> <img src=\".../sales.gif\"> <!-- TemplateEndIfClause -->
<!-- TemplateBeginIfClause cond=\"Dept == 2\" --> <img src=\".../support.gif\"> <!-- TemplateEndIfClause-->
<!-- TemplateBeginIfClause cond=\"Dept == 3\" --> <img src=\".../hr.gif\"> <!-- TemplateEndIfClause -->
<!-- TemplateBeginIfClause cond="Dept != 3" --> <img src=".../spacer.gif"> <!-- TemplateEndIfClause -->
<!-- TemplateEndMultipleIf -->
创建基于模板的文档时,模板参数会自动传递到该文档。模板用户决定显示哪个图像。