2010-10-05 4 views

ответ

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

Я не уверен, будет ли первый метод поддерживать сортировку. Однако, если вы правильно используете функцию извлечения, что обязательно будет.

+0

Это сложно (давайте, 10 строк кода для этого?!?), Но я уже сделал такие сложные вещи, чтобы получить такую ​​же простую информацию, как эта. Поэтому вы должны быть правы. Поздравляем, принимаем и благодарим за обмен! – greg0ire

1

Иногда выборки трюка от проектирования/базы/переопределения/шаблонов/полного/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))))} 

(не забудьте изменить «изображение» фильтрации к чему-то более реальному)