Skip to content

Instantly share code, notes, and snippets.

@mbabker
Created July 30, 2012 22:53
Show Gist options
  • Save mbabker/3211464 to your computer and use it in GitHub Desktop.
Save mbabker/3211464 to your computer and use it in GitHub Desktop.
Creating a category via component postflight
// Get the database object
$db = JFactory::getDbo();
// JTableCategory is autoloaded in J! 3.0, so...
if (version_compare(JVERSION, '3.0', 'lt'))
{
JTable::addIncludePath(JPATH_PLATFORM . 'joomla/database/table');
}
// Initialize a new category
$category = JTable::getInstance('Category');
$category->extension = 'com_myextension';
$category->title = 'My Category';
$category->description = 'A category for my extension';
$category->published = 1;
$category->access = 1;
$category->params = '{"target":"","image":""}';
$category->metadata = '{"page_title":"","author":"","robots":""}';
$category->language = '*';
// Set the location in the tree
$category->setLocation(1, 'last-child');
// Check to make sure our data is valid
if (!$category->check())
{
JError::raiseNotice(500, $category->getError());
return false;
}
// Now store the category
if (!$category->store(true))
{
JError::raiseNotice(500, $category->getError());
return false;
}
// Build the path for our category
$category->rebuildPath($category->id);
@mbabker
Copy link
Author

mbabker commented Aug 4, 2012

1 should always be the ID of the root category, at least in the CMS. You have to know the ID of the parent item you want to be a child of, so I can hard code it to 1 for CMS instances and be OK. Using getRootId should work also if you need it to.

@ckwillling
Copy link

Is this ok for joomla2.5? Because i copy it and It din't create any new category

@betweenbrain
Copy link

Just wondering why you have $db = JFactory::getDbo(); in this?

@chhrahul
Copy link

chhrahul commented May 24, 2021

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment