EZ Publish/EZ Publish 内容提取
EZ Publish | EZ Publish安装与卸载 | EZ Publish的使用 | EZ Publish常见问题 | EZ Publish其他 |
EZ Publish内容提取[ ]
eZ Publish 中保存的信息可以用"fetch"模板操作符提取。这个操作符会调用模块的fetch 函数。它通常被用来调用content 模块以提取节点,对象等内容。fetch 操作符只能用于定义了fetch 函数的模块。以下的模型演示了fetch 操作符的语法。
fetch( <模块>, <函数>, <参数> )
模块的fetch 函数和参数列表在模块的"function_definition.php“中定义,这个文件位于模块的目录中。
提取单个节点
下例演示了如何从数据库中提取单个节点。
{def $my_node=fetch( content, node, hash( node_id, 13 ) )} ... {undef}
上例要求eZ Publish 从content 模块中提取单个节点。只用到了一个参数,要提取的节点ID。这个操作符会返回一个"ezcontentobjecttreenode"对象,这个对象被设置到$my_node 变量中。这个变量可以用来提取节点与节点对象的信息。例如:可以提取对象的名称,属性和发布时间等。如果节点不可用/不存在或当前用户没有权限访问它,这操作符会返回FALSE。
提取多个节点
可以从提取某个节点下的多个节点。这可以通过用"list"替换"node"作为"fetch"操作符的第二个参数来达到。
下例演示了如何提取节点13 下的所有节点。
{def $my_node=fetch( content, list, hash( parent_node_id, 13 ) )} ... {undef}
这个操作符会返回一个"ezcontentobjecttreenode"对象的数组。"content"模块的"list" fetch 函数可以接受多个参数。这些参数是可选的且可以用来优化内容提取,例如:筛选特定的节点。下表揭示了一部分常用参数。
下例演示了如何提取节点13 下最新的10 篇文章。
{def $my_node=fetch( content, list, hash( parent_node_id, 13, limit, 10, class_filter_type, include, class_filter_array, array( 'article' ) ) )} ... {undef}
输出节点与对象数据[ ]
只要一个代表某个节点的"ezcontentobjectreenode"对象在模板中可用,就可以用它来输出关于节点和节点对象的内容。以下内容演示了如何提取最常用的数据。
一般信息
对象名
{$node.name|wash}
对象名可以从节点直接访问(换言之,不需要用$node.object.name)。"wash"操作符确保输出不包含任何破坏HTML 的字符且/或序列。
对象最后修改日期/时间
{$node.object.modified|l10n( 'shortdatetime' )}
因为修改时间是一个UNIX 时间戳,它必须被格式化后输出。可以用"l10n"操作符输出本地化的日期/时间。
对象属主的名称
{$node.object.owner.name|wash}
最后修改者的名称
{$node.object.current.creator.name|wash()}
对象的类名
{$node.object.class_name|wash()}
对象属性
可以通过"data_map"方法访问对象的属性。这个方法返回"ezcontentobjectattribute"对象的哈希表。每个对象代表一个属性。键值为属性标识符。下例演示了如何提取"first_name"属性。
{$node.object.data_map.first_name}
上例不产生任何输出,因为请求的数据需要被格式化。有两种方法输出属性的内容:
• 原始输出(".output")
• 格式化输出("attribute_view_gui"函数)
原始输出与格式化输出的区别在于格式化输出通过一个模板输出属性的内容。原始输出只是在同一个模板内简单的输出属性内容。永远应该用"attribute_view_gui“函数输出属性内容。原始输出只有在必要的情况下使用(例如:当用IF 语句检查某个属性的值的时候)。
原始输出
原始输出正如其定义一样:输出属性内保存的原始内容。实际的语法取决于属性的数据类型。大部分情况下,可以用".output"输出原始数据。
一般解决方案
下例演示了如何输出"my_attribute"的内容
{$node.object.data_map.my_attribute.content}
XML 块
下例演示了如何输出一个XML 块"my_xml"的内容。
{$node.object.data_map.my_xml.content.output.output_text}
图片
下例演示了如何输出"my_image"内保存的图片。
<img src="{$node.object.data_map.my_image.content[image_size].full_path}" ... />
格式化输出
每种数据类型都有一套用于不同上下文中显示内容的模板。每种数据类型至少有两种模板:"view"模板和"edit"模板。"view"模板用于显示属性内容,"edit"模板用于编辑数据。默认的数据类型模板位于"design/standard/templates/content/datatype"目录。
"attribute_view_gui"函数允许用数据类型的"view"模板来显示属性。下例演示了如何用这个函数。
{attribute_view_gui attribute=$node.object.data_map.name_of_any_attribute}
上例将会正确生成任何属性的内容(与数据类型无关)。