Joomla 2.5父类别ID

时间:2013-09-18 11:14:51

标签: php joomla joomla2.5

我正在尝试获取另一个类别的父类别的ID。 (我有孩子类别的ID。)

我一直在尝试使用Joomla的Category模型,我成功地使用了Article等价物从文章的Id中获取了Child Category ID。

//article model
jimport('joomla.application.component.model');
$articlesModel = JModel::getInstance('ContentModelArticle');
$categoriesModel = JModel::getInstance('ContentModelCategory');

//Get Article Category id
$article = $articlesModel->getItem($art['id']);
$catid = $article->catid;

//Get Category Parent Category
$category = $categoriesModel->getItem($catid);
$parentID = $category->getParent();

echo "<pre>";
var_dump($parentID);
echo "</pre>";

但是我一直在收到错误,说我正在尝试调用非对象的函数。

有人可以指出我出错的地方吗?感谢。

编辑:应该提到这都在模块文件中

更改战术 我最终找到了另一种方法: 现在我正在查询数据库以获取信息。在这种情况下它很有用,因为我可以获取我需要的确切数据。

$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('parent_id');
$query->from('#__categories'); 
$query->where("id = '$child_id'");    
$db->setQuery($query);

//check if error
if ($db->getErrorNum()) {
  echo $db->getErrorMsg();
  exit;
}
$parent = $db->loadObjectList();
$parent_id = $parent['0']->parent_id;

1 个答案:

答案 0 :(得分:2)

如果您要加载ContentModelCategory,最好使用前缀:

$categoriesModel = JModel::getInstance('Category','ContentModel');

但是,我不相信这是适合你的模型,因为它从请求中获取了它的上下文。

我可以建议两种选择:

使用JCategories实例

这是内容组件使用的首选方法。

$article = $articlesModel->getItem($id);
$catid = $article->catid;

//Get Category Parent Category
$categoriesModel = JCategories::getInstance('content');
$category = $categoriesModel->get($catid);
$parent = $category->getParent();
if($parent){
    $parentId = $parent->id;
    echo "parentId: ".$parentId;
}

使用CategoriesModelCategory

这是com_categories使用的模型。

$article = $articlesModel->getItem(5);
$catid = $article->catid;

//add the CategoriesModelCategory model include path 
JModel::addIncludePath (JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_categories' . DS . 'models');
//add the table include path required by the model
JTable::addIncludePath (JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_categories' . DS . 'tables');

$categoriesModel = JModel::getInstance('Category','CategoriesModel');
$category = $categoriesModel->getItem($catid);
if($category){
    $parentId = $category->parent_id;
    echo "parentId: ".$parentId;
}