Определение корневой категории для компонентов, использующих таблицу категорий Joomla

Часто надо знать корневую категорию в которой находится пользователь, например для того, чтобы оформить модули в соответствии с цветовой гаммой раздела, ну и для чего-нибудь еще, придумайте сами.

Написал функцию, определяющую корневую категорию, пригодна для любого компонента, использующего таблицу категорий Joomla, для хранения своих категорий.

Функция получилась очень простая из-за того, что в категориях использованы nested sets, которые существенно облегчают процесс выборки как вверх так и вниз по дереву.

Тело функции:

function getRootCat($catid){
  static $id;

  if(empty($id)){
  $db = JFactory::getDBO();
  $query = $db->getQuery(true);

  $query->select('parent.id');
  $query->from('#__categories as child');
  $query->from('#__categories as parent');
  $query->where('child.id = '.(int)$catid);
  $query->where('parent.rgt >= child.rgt');
  $query->where('parent.lft <= child.lft');
  $query->where('parent.level = 1');
  $db->setQuery($query);
       $id = $db->loadResult();
  }
  return $id;
  }

Входящий параметр один — ид текущей категории. Выход тоже один — ид корневой категории.

0 комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.