2

基本上我需要一些东西来给我返回一篇文章的类别。Joomla 具有多级类别,但文章只能位于这些类别之一。如果结构是这样的:

  • 水果(类别 ID:1)
    • 热带(类别 ID:2)
      • 芒果(文章编号:1)
    • 季节性(类别 ID:3)
  • 蔬菜(类别 ID:4)

我基本上想要所有祖先类别的数组。这意味着 Mango 文章将使用此函数返回一个 [1,2] 数组。

get_categories($aid=1) //will return [1,2]

我已经查看了本节中仍在完善的 Joomla API。我想知道你们是否有更好的运气。我在 StackOverflow 上没有找到任何有用的东西。

4

1 回答 1

3

JCategories您可以通过使用组件 com_content 的类别的实现来获取类别树。

<?php
jimport('joomla.application.categories');
jimport('joomla.application.component.model');
require_once JPATH_BASE . '/components/com_content/helpers/category.php';

$articleId = $this->item->id;    // or your way to get articleId

$articlesModel = JModel::getInstance('ContentModelArticle');
$articleCategoryId = $articlesModel->getItem($articleId)->catid;

$contentCategoriesModel = new ContentCategories();
$categoryTree = $contentCategoriesModel->get($articleCategoryId)->getPath();

重要的是,结果数组的元素不仅包含id类别,还包含alias字段(如 a 2:tropical)。要提取整数id使用intval()函数,如下所示:

foreach ($categoryTree as $categoryTreeNode) {
    $categoryTreeNodeId = intval($categoryTreeNode);
}
于 2012-06-21T09:10:13.960 回答