Авторизация

Как узнать позицию страницы среди соседних страниц в UMI

Вопрос: В каталоге есть объекты, как узнать позицию страницы-объекта среди соседних страниц. Просто нужно узнать номер/позицию.
В umiHierarchyElement есть getOrd() который возвращает позицию среди соседних страниц, но что-то он как-то не совсем правильно считает, такое ощущение что он просто среди всех объектов/страниц считает, не учитывая родителей.

---------------------------

Из описания: getOrd() - Получить порядок страницы относительно соседних страниц.

Как оказалось getOrd() просто вытягивает из БД из таблицы cms3_hierarchy, из строки ord значение. А там оно уже хранится как бы в разрозненном порядке, т.е. не обязательно будет 1, 2, 3, 4, 5 и страница которую я ищу (например третью в дереве в админке) не обязательно будет под номером 3. Там могут быть записи и в таком порядке: 3, 39, 40, 55.

Я нашёл 2 варианта возможно не самых лучших но всё же, как узнать номер:

1.

$pages = new selector('pages');
$pages->where('hierarchy')->page(91)->childs(1);
$pages->order('ord')->asc();
$num = 0;
foreach($pages as $page) {
$num++;
if($page->id == 114)
   echo $num;
}}

2.
$hierarchy = umiHierarchy::getInstance();
$element = $hierarchy->getElement(114);
$sql = "SELECT count(id) FROM cms3_hierarchy WHERE rel = {$element->getParentId()} AND is_active = 1 AND is_deleted = 0 AND ord < {$element->getOrd()}";
$res = l_mysql_query($sql);
$r = mysql_fetch_row($res);
echo $r[0];

[ Saitadmin.ru || с 2006 по текущий год || Санкт-Петербург ]