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.