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.


¿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);
    }
}

Si ha respondido adecuadamente su propia pregunta, configúrela como su respuesta elegida para eliminarla de la lista de preguntas sin respuesta.
— Garth
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.