我正在尝试获取另一个类别的父类别的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;
答案 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;
}