Como obter categorias de extensão personalizada ou componente de terceiros

8

Eu tenho um componente de terceiros que armazena suas categorias na #__categoriestabela.

-----+----------------+-----------------------+-----------------------+-----
...  | 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   | ...
-----+----------------+-----------------------+-----------------------+-----
...  | ...            | ...                   | ...                   | ...
-----+----------------+-----------------------+-----------------------+-----

Posso imprimir categorias de com_bannersou de outros componentes principais, como abaixo,

$categories = JCategories::getInstance('Banners');
$subCategories = $categories->get()->getChildren(true);
print_r($subCategories);

Mas mostra

" Erro fatal : Classe 'ThirdPartyCategories' não encontrada em ... \ libraries \ legacy \ categories \ categories.php on line 152"

ao tentar imprimir as categorias de outra extensão como abaixo,

$categories = JCategories::getInstance('ThirdParty');
$subCategories = $categories->get()->getChildren(true);
print_r($subCategories);

O que eu tenho a ver com as categorias herdadas nas bibliotecas do joomla?

Nota: o nome ThirdPartyé apenas um espaço reservado, pode ser o nome de qualquer extensão de terceiros.

kolunar
fonte
O ThirdPartynome real do componente?
Lodder
Não, é apenas um espaço reservado, pode ser o nome de qualquer extensão de terceiros. No meu caso, é com_thirdparty
kolunar

Respostas:

6

Depois de fazer algumas pesquisas, verifica-se que o componente de terceiros que estou usando não possui um arquivo criado conforme o ..\components\com_thirdparty\helpers\category.php necessário para implementar uma classe ThirdPartyCategoriesque se estende JCategoriesno diretório de auxiliares do componente, conforme descrito abaixo

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);
    }
}
kolunar
fonte
Se você respondeu adequadamente sua própria pergunta, defina-a como sua resposta escolhida para removê-la da lista de perguntas não respondidas.
Garth