J'ai un composant tiers qui stocke ses catégories dans #__categories
table.
-----+----------------+-----------------------+-----------------------+-----
... | extension | title | alias | ...
-----+----------------+-----------------------+-----------------------+-----
... | com_content | Uncategorised | uncategorised | ...
-----+----------------+-----------------------+-----------------------+-----
... | com_banners | Sample Data-Banners | sample-data-banners | ...
-----+----------------+-----------------------+-----------------------+-----
... | com_newsfeeds | Sample Data-Newsfeeds | sample-data-newsfeeds | ...
-----+----------------+-----------------------+-----------------------+-----
... | com_contact | Sample Data-Contact | sample-data-contact | ...
-----+----------------+-----------------------+-----------------------+-----
... | com_content | Joomla! | joomla | ...
-----+----------------+-----------------------+-----------------------+-----
... | com_thirdparty | ThirdParty Category | thridparty-category | ...
-----+----------------+-----------------------+-----------------------+-----
... | ... | ... | ... | ...
-----+----------------+-----------------------+-----------------------+-----
Je peux imprimer des catégories de com_banners
ou d’autres composants essentiels comme ci-dessous,
$categories = JCategories::getInstance('Banners');
$subCategories = $categories->get()->getChildren(true);
print_r($subCategories);
Mais ça se voit
"Erreur fatale: La classe 'ThirdPartyCategories' n'a pas été trouvée dans ...\libraries\legacy\categories\categories.php à la ligne 152"
en essayant d’imprimer les catégories d’une autre extension comme ci-dessous,
$categories = JCategories::getInstance('ThirdParty');
$subCategories = $categories->get()->getChildren(true);
print_r($subCategories);
Qu'est-ce que j'ai à faire avec les catégories héritées des bibliothèques joomla?
Remarque: le nom
ThirdParty
est simplement un espace réservé, qui pourrait être le nom d’une extension tierce.
Après quelques recherches, il s’avère que le composant tiers que j’utilise n’a pas de fichier créé en tant que ..\components\com_thirdparty\helpers\category.php
qui est nécessaire pour implémenter une classe ThirdPartyCategories
qui étend JCategories
dans le répertoire helpers du composant, comme décrit ci-dessous
defined('_JEXEC') or die;
/**
* ThirdParty Component Category Tree
*/
class ThirdPartyCategories extends JCategories
{
/**
* Constructor
*
* @param array $options Array of options
*/
public function __construct($options = array())
{
$options['table'] = '#__thirdparty';
$options['extension'] = 'com_thirdparty';
$options['statefield'] = 'published';
parent::__construct($options);
}
}