So erhalten Sie Kategorien von benutzerdefinierten Erweiterungen oder Komponenten von Drittanbietern

8

Ich habe eine Drittanbieter-Komponente, die ihre Kategorien in einer #__categoriesTabelle speichert .

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

Ich kann Kategorien von com_bannersoder von anderen Kernkomponenten wie folgt drucken :

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

Aber es zeigt

" Schwerwiegender Fehler : Klasse 'ThirdPartyCategories' nicht in ... \ Bibliotheken \ Legacy \ Kategorien \ Kategorien.php in Zeile 152 gefunden"

Wenn Sie versuchen, die Kategorien einer anderen Erweiterung wie folgt zu drucken,

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

Was habe ich mit den Legacy-Kategorien in Joomla-Bibliotheken zu tun?

Hinweis: Der Name ThirdPartyist nur ein Platzhalter und kann der Name einer beliebigen Nebenstellenerweiterung sein.

kolunar
quelle
Ist ThirdPartyder tatsächliche Name der Komponente?
Lodder
Nein, es ist nur ein Platzhalter, könnte der Name einer Drittanbieter-Erweiterung sein. In meinem Fall ist es com_thirdparty
kolunar

Antworten:

6

Nach einigen Recherchen stellt sich heraus, dass für die von mir verwendete Komponente eines Drittanbieters keine Datei erstellt wurde, ..\components\com_thirdparty\helpers\category.php die zum Implementieren einer Klasse erforderlich ist, ThirdPartyCategoriesdie sich JCategorieswie unten beschrieben im Hilfeverzeichnis der Komponente erstreckt

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
quelle
Wenn Sie Ihre eigene Frage angemessen beantwortet haben, legen Sie sie bitte als Ihre gewählte Antwort fest, um sie aus der Liste der unbeantworteten Fragen zu entfernen.
Garth