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.


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.