2

基本的に、記事のカテゴリを返すために何かが必要です。Joomlaにはマルチレベルのカテゴリがありますが、記事はこれらのカテゴリの1つにしか存在できません。構造が次のような場合:

  • 果物(カテゴリID:1)
    • トロピカル(カテゴリーID:2)
      • マンゴー(記事ID:1)
    • 季節限定(カテゴリーID:3)
  • 野菜(カテゴリーID:4)

基本的に、すべての祖先カテゴリの配列が必要です。つまり、Mangoの記事には、この関数で返される[1,2]の配列が含まれます。

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

このセクションでまだ洗練されているJoomlaAPIを調べました。運が良かったのではないかと思いました。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フィールド(のように2:tropical)も含まれるということです。整数を抽出するには、次のような関数をid使用します。intval()

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