2010-10-05 6 views

Répondre

1

Voici un moyen, basé sur la propriété enfants du nœud.

  {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} 

Vous pouvez également utiliser une fonction d'extraction de gabarit. Je ne suis pas sûr si la première méthode va maintenir le tri. Cependant, si vous utilisez la fonction d'extraction correctement, cela sera certainement le cas.

+0

C'est compliqué (allez, 10 lignes de code pour ça?!?), Mais j'ai déjà fait des choses si compliquées pour obtenir une information aussi simple que celle-ci. Donc vous devez avoir raison. Félicitations, accepté, et merci pour le partage! – greg0ire

1

Parfois, la récupération tour de la conception/base/override/templates/full/image.tpl peuvent être utilisés:

{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))))} 

(ne pas oublier de changer 'l'image' à filtrer quelque chose de plus réel)

Questions connexes