3

eZ Publishでは、ezContentObjectTreeNodeオブジェクトが指定された場合、前/次の兄弟を見つけるにはどうすればよいですか?テンプレート演算子はありますか?そうでない場合、phpメソッドはありますか?

4

2 に答える 2

1

これは、ノードの子プロパティに基づく方法です。

         {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

最初の方法で並べ替えが維持されるかどうかはわかりません。ただし、フェッチ機能を適切に使用すれば、確かにそうなります。

于 2010-11-09T13:03:38.507 に答える
1

design / base / override / templates / full/image.tplからのフェッチトリックを使用できる場合があります。

{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 に答える