Как быть если нужно добавить много категорий?.. Добавлять через админ часть не очень весело, поэтому лучше попробовать добавить с помощью PHP скрипта.

Код для добавления категории копировал из модели com_categories

$db = JFactory::getDbo();

JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_categories'.DS.'tables');
$table = JTable::getInstance('Category', 'CategoriesTable');

$title = 'Заголовок категории';
$parentId = 'root';
$level = 1;

$data['id'] = 0;
$data['title'] = $title;
$data['extension'] = 'com_orgpoisk';
$data['access'] = 1;
$data['metadata'] = 'com_orgpoisk';
$data['published'] = 1;
$data['parent_id'] = $parentId;
$data['params'] = '{"target":"","image":""}';
$data['level'] = $level;

// Установить новый parent_id , если родительский идентификатор не
// совпадает ИЛИ при создании/сохранении как копия .
if ($table->parent_id != $data['parent_id'] || $data['id'] == 0)
{
$table->setLocation($data['parent_id'], 'last-child');
}

if (!$table->bind($data))
{
$this->setError($table->getError());
return false;
}

if (isset($data['rules']))
{
$rules = new JAccessRules($data['rules']);
$table->setRules($rules);
}

// Проверить данные.
if (!$table->check())
{
$this->setError($table->getError());
return false;
}

// Сохранить данные.
if (!$table->store())
{
echo $table->getError();
$this->setError($table->getError());
return false;
}

// Перестроить путь для категории:
if (!$table->rebuildPath($table->id))
{
$this->setError($table->getError());
return false;
}

// Перестроить пути дочерних элементов категории:
if (!$table->rebuild($table->id, $table->lft, $table->level, $table->path))
{
$this->setError($table->getError());
return false;
}

$table->reset();


Этот код можно оформить в виде функции и использовать в цикле для добавления большого количества категорий, например, из csv файла. Делать лучше частями, чтобы не получился тайм-аут выполнения скрипта.