使用 eZ Publish,当给定一个 ezContentObjectTreeNode 对象时,我如何找到它的上一个/下一个兄弟?有模板运算符吗?如果没有,是否有php方法?
问问题
934 次
2 回答
1
有时可以使用 design/base/override/templates/full/image.tpl 中的 fetch 技巧:
{def sort_order=$node.parent.sort_array[0][1]
sort_column=$node.parent.sort_array[0][0]
sort_column_value=cond( $sort_column|eq( 'published' ), $node.object.published,
$sort_column|eq( 'modified' ), $node.object.modified,
$sort_column|eq( 'name' ), $node.object.name,
$sort_column|eq( 'priority' ), $node.priority,
$sort_column|eq( 'modified_subnode' ), $node.modified_subnode,
false() )
previous_image=fetch_alias( subtree, hash( parent_node_id, $node.parent_node_id,
class_filter_type, include,
class_filter_array, array( 'image' ),
limit, 1,
attribute_filter, array( and, array( $sort_column, $sort_order|choose( '>', '<' ), $sort_column_value ) ),
sort_by, array( array( $sort_column, $sort_order|not ), array( 'node_id', $sort_order|not ) ) ) )
next_image=fetch_alias( subtree, hash( parent_node_id, $node.parent_node_id,
class_filter_type, include,
class_filter_array, array( 'image' ),
limit, 1,
attribute_filter, array( and, array( $sort_column, $sort_order|choose( '<', '>' ), $sort_column_value ) ),
sort_by, array( array( $sort_column, $sort_order ), array( 'node_id', $sort_order ) ) ) )}
(不要忘记将“图像”过滤更改为更实际的内容)
于 2011-02-22T14:55:33.300 回答
1
这是一种基于节点的 children 属性的方法。
{foreach $node.parent.children as $k => $v}
{if eq($node.node_id, $v.node_id)}
{if gt($k, 0)}
{set $prev = $node.parent.children[$k|dec()]}
{/if}
{if lt($k, $node.parent.children|count())}
{set $next = $node.parent.children[$k|inc()]}
{/if}
{/if}
{/foreach}
您还可以使用模板获取功能。 http://doc.ez.no/eZ-Publish/Technical-manual/3.6/Reference/Modules/content/Fetch-functions/list
我不确定第一种方法是否会保持排序。但是,如果您正确使用 fetch 功能,那肯定会。
于 2010-11-09T13:03:38.507 回答