EZ Publish/EZ Publish URL处理
EZ Publish | EZ Publish安装与卸载 | EZ Publish的使用 | EZ Publish常见问题 | EZ Publish其他 |
本条目阐述了一些常用的与模板开发相关的任务。
模板基本任务[ ]
模板引入
模板文件可以通过"include"函数导入。因为这个函数可以用来引入eZ Publish 目录下的任何位置的任何文件,比如显式告诉eZ Publish 在"design"目录中寻找文件。可以在"路径/文件名"前添加"design:"前缀来达到这个目的。下例演示了如何引入"footer.tpl",这个文件位于"design"下的"templates"目录中。
{include uri='design:footer.tpl'}
如果请求的文件在主界面中没有找到,系统会在附加界面和标准界面中继续寻找。
输出清理
包含非法字符的变量在输出之前都应该用"wash"操作符来清理。这个操作符确保输出中不会含有破坏HTML 结构的符号。下例演示了它的用法。
{def $bogus_string='hello < world'} {$bogus_string|wash()}
输出:
hello < world
电子邮件模糊化
除了确保输出内容的安全外,"wash"操作符也可以用来对WEB 页面上的电子邮件地址进行模糊化处理。模糊化处理的电子邮件地址会减少邮件地址被检索机器人加入垃圾邮件列表的概率。下例演示了"wash"操作符如何用于电子邮件模糊化。
{def $email_address='allman@example.com'} {$email_address|wash( 'email' )}
输出:
allman[at]example[dot]com
字符串连接
"concat"操作符可以把多个字符串连接成一个字符串。下例演示了它的用法。
{def $my_string='sausage'} {concat( 'Liver ', $my_string, ' sandwitch' )}
输出:
Liver sausage sandwitch
自定义的视图参数
用于显式节点的URL 中可以包含自定义的视图参数。自定义的视图参数必须追加在URL 的最后。每个参数必须有一个参数名和参数值。参数名必须由小括号"("和")"封装。参数的每个元素必须由"/"分割。下例演示了如何使用在节点系统URL 中是使用自定义的视图参数(除系统视图参数外)。
http://www.example.com/content/view/full/13/(color)/green/(amount)/34
相同的参数也可以追加在虚拟URL 后:
http://www.example.com/company/about_us/(color)/green/(amount)/34
当使用自定义视图参数时,系统会为这些参数在哈希表中创建记录,参数名为哈希表的键值。所有的参数值都会被作为字符串处理。参数的键值和值会被保存在$view_paramters 中。上例的参数会生成如下的哈希表:
下例演示了如何在模板中提取上述参数:
The color is: {$view_parameters.color} The amount is: {$view_parameters.amount}
输出:
The color is: green The amount is: 34
"edit.tpl"模板中的自定义视图参数
在3.9 版本之前,不能向"content"模块的"edit"视图传送自定义视图参数。从3.9 版本,系统开始支持这种特性。下例演示了如何向"edit.tpl“传输这种参数:
http://www.example.com/content/edit/13/03/eng-GB/(color)/green/(amount)/34
这会要求eZ Publish 在编辑对象13 的版本3 的eng-GB 翻译的时候同时接受上述两个自定义参数。
URL 处理[ ]
当链接,非内容的图片,CSS 文件等被引入模板时,必须使用一个相应的模板操作符来确保指向被引入文件的路径正确。下面操作符中的一个可以被使用:
• ezurl
• ezimage
• ezdesign
ezurl ezurl 确保URL 与eZ Publish 的安装目录,访问方法以及运行环境(非虚拟主机模式,虚拟主机模式,等)无关。换言之,通过使用ezurl 操作符,URL 总是可用。使用ezurl 操作符时,只需要提供URL 中eZ Publish 特有的部分。操作符会生成其余部分(http://,主机名,域名,目录,站点入口,端口,等)最终的输出为一个合法的地址。这种解决方案可以确保在站点被迁移并/或当访问方法被改变的时候,不需要修改所有的URL。默认情况下,"ezurl"操作符输出的URL 会自动被双引号封装。换言之,操作符的输出可以被直接追加到HTML 代码中的超链接中。下例演示了这个操作符的用法。
链接到模块/视图(使用系统URL)
<a href={'/user/login'|ezurl()}>Login</a>
上例演示了如何创建一个链接到"user“模块的"login"视图的链接。"/user/login"只是一个示例,另外一个例子,链接到一个节点:"/content/view/full/34"。如果eZ Publish 运行于"ezpublish"目录,主机名"www.example.com“,使用“URL 访问方法”且站点入口的名称为"my_company",这个操作符会输出以下内容:
"http://www.example.com/ezpublish/index.php/my_company/user/login"
如果运行于“虚拟主机模式”且使用“主机访问方法”,下记URL 会被生成:
"http://www.example.com/user/login"
链接到一个节点(使用节点的虚拟URL)
当创建一个链接到节点的链接(使用节点的虚拟URL,也被称为URL 别名)时,地址通过"ezurl"处理。这样做的原因是内部URL 表只包含eZ Publish 特有的URL 部分。下例演示了如何用"ezurl"创建节点的虚拟URL。
<a href={$node.url_alias|ezurl()}>Link to a node</a>
如果节点的URL 别名为"company/about_us"且eZ Publish 运行于虚拟主机模式且使用主机访问方法,以下URL 会被生成:
"http://www.example.com/company/about_us"
ezimage
ezimage 与ezurl 工作方式完全相同。但是它不包含"index.php"部分。每次在模板中引入非内容图片时,都需要用到这个操作符。图片必须被放置在某个界面的"images"目录中。无论eZ Publish 安装在哪个目录,使用何种访问方法和/或使用何种运行模式,这个操作符都会生成一个正确的指向图片的地址。下例演示 了"ezimage"的用法:
<img src={'women.jpg'|ezimage()} alt="This is my image." ... />
如果eZ Publish 使用主机访问模式且站点入口使用"my_design"界面,操作符会生成如下输出:
"http://www.example.com/design/my_design/images/women.jpg"
如果图片被放置在"images"目录下的某个子目录中,子目录的名称必须在模板中明示。如果请求的文件在主界面中没有找到,系统会在附加界面和标准界面中继续搜寻。
ezdesign
"ezdesign"操作符与"ezurl"的工作方式完全相同。但是它不包含"index.php“部分。在模板中引入界面元素(CSS 文件,Javascript 等)时,这个操作符负责生成指向目标文件的正确URL。下例演示了如何用这个操作符引入CSS 文件。
... <style type="text/css"> @import url({'stylesheets/my_stuff.css'|ezdesign()}); </style> ...
如果eZ Publish 在主界面中没有找到指定的文件,系统会在附加界面和标准界面中继续搜寻。