с eZ Publish, при заданном объекте ezContentObjectTreeNode, как я могу найти его предыдущую/следующую сестру? Есть ли оператор шаблона? Если нет, существует ли php-метод?Как вам найти предыдущего/следующего брата узла?
3
A
ответ
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
Я не уверен, будет ли первый метод поддерживать сортировку. Однако, если вы правильно используете функцию извлечения, что обязательно будет.
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))))}
(не забудьте изменить «изображение» фильтрации к чему-то более реальному)
Это сложно (давайте, 10 строк кода для этого?!?), Но я уже сделал такие сложные вещи, чтобы получить такую же простую информацию, как эта. Поэтому вы должны быть правы. Поздравляем, принимаем и благодарим за обмен! – greg0ire