Cómo obtener Categorías de extensiones personalizadas o componentes de terceros

8

Tengo un componente de terceros que almacena sus categorías en la #__categoriestabla.

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

Puedo imprimir categorías desde com_bannerso desde otros componentes principales como se muestra a continuación,

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

Pero se nota

" Error fatal : la clase 'ThirdPartyCategories' no se encuentra en ... \ bibliotecas \ legacy \ categories \ categories.php en la línea 152"

al intentar imprimir las categorías de otra extensión como se muestra a continuación,

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

¿Qué tengo que hacer con las categorías heredadas en las bibliotecas de Joomla?

Nota: El nombre ThirdPartyes solo un marcador de posición, podría ser el nombre de cualquier extensión de terceros.

kolunar
fuente
¿Es ThirdPartyel nombre real del componente?
Lodder
No, es solo un marcador de posición, podría ser el nombre de cualquier extensión de terceros. En mi caso, es com_thirdparty
kolunar

Respuestas:

6

Después de investigar un poco, resulta que el componente de terceros que estoy usando no tiene un archivo creado como ..\components\com_thirdparty\helpers\category.php se requiere para implementar una clase ThirdPartyCategoriesque se extiende JCategoriesen el directorio de ayuda del componente como se describe a continuación

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
fuente
Si ha respondido adecuadamente su propia pregunta, configúrela como su respuesta elegida para eliminarla de la lista de preguntas sin respuesta.
Garth