Как получить Категории пользовательского расширения или стороннего компонента

8

У меня есть сторонний компонент, который хранит свои категории в #__categoriesтаблице.

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

Я могу печатать категории из com_bannersили из других основных компонентов, как показано ниже,

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

Но это показывает

« Неустранимая ошибка : класс« ThirdPartyCategories »не найден в ... \ library \ legacy \ Categories \ category.php в строке 152»

при попытке напечатать категории другого расширения, как показано ниже,

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

Что мне делать с устаревшими категориями в библиотеках Joomla?

Примечание: имя ThirdPartyявляется просто заполнителем, может быть именем любого стороннего расширения.

kolunar
источник
Является ли ThirdPartyфактическое название компонента?
Лоддер
Нет, это просто заполнитель, это может быть имя любого стороннего расширения. В моем случае это com_thirdparty
kolunar

Ответы:

6

После некоторых исследований выясняется, что у стороннего компонента, который я использую, нет созданного файла, ..\components\com_thirdparty\helpers\category.php который необходим для реализации класса, ThirdPartyCategoriesкоторый расширяется JCategoriesв каталоге помощников компонента, как описано ниже.

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
источник
Если вы соответствующим образом ответили на свой вопрос, установите его в качестве выбранного, чтобы удалить его из списка оставшихся без ответа вопросов.
Гарт