Come ottenere categorie di estensioni personalizzate o componenti di terze parti


8

Ho un componente di terze parti che memorizza le sue categorie nella #__categoriestabella.

-----+----------------+-----------------------+-----------------------+-----
...  | 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 stampare categorie da com_bannerso da altri componenti principali come di seguito,

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

Ma mostra

" Errore irreversibile : classe 'ThirdPartyCategories' non trovata in ... \ librerie \ legacy \ categorie \ categorie.php sulla riga 152"

quando si tenta di stampare le categorie di un'altra estensione come di seguito,

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

Cosa devo fare con le categorie legacy nelle librerie di joomla?

Nota: il nome ThirdPartyè solo un segnaposto, potrebbe essere il nome di qualsiasi estensione di terze parti.


Il ThirdPartynome effettivo del componente?
Lodder,

No, è solo un segnaposto, potrebbe essere il nome di qualsiasi estensione di terze parti. Nel mio caso, è com_thirdparty
kolunar

Risposte:


6

Dopo aver fatto qualche ricerca, si scopre che il componente di terze parti che sto usando non ha un file creato come ..\components\com_thirdparty\helpers\category.php richiesto per implementare una classe ThirdPartyCategoriesche si estende JCategoriesnella directory degli helper del componente come descritto di seguito

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

Se hai risposto adeguatamente alla tua domanda, impostala come risposta scelta per rimuoverla dall'elenco delle domande senza risposta.
Garth,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.